PHP imagecreatefromjpeg同时保持方向

时间:2017-08-30 14:37:23

标签: php jpeg exif

我一直在处理我的图片上传网站。我正试图从我的iPhone拍照并将它们上传到我的网络服务器。

我的文件上传很好,但我遇到的问题是我的所有图片都向左旋转了90度。

我的图片上传过程

0

创建新图像并将其上传到我的网站目录。我创建了一个新图像来删除所有EXIF数据(GPS位置,我的所有个人信息)

问题在于,当我上传图像时,它不会以纵向方式保存文件(6)。它实际上并不保存任何方向信息。这是imagecreatefromjpeg的明显副作用。但是我的所有肖像风格图像都保存为横向格式。

我的问题是,在保存到我的服务器后,有没有办法让方向数据重新写入新图像?

谢谢大家的时间!

2 个答案:

答案 0 :(得分:3)

您可以阅读exif信息并使用它来旋转或翻转图像。那你就不再需要方向数据了。

类似的东西:

$imageObject = imagecreatefromjpeg($_FILES["fileToUpload"]["tmp_name"]);

# Get exif information
$exif = exif_read_data($_FILES["fileToUpload"]["tmp_name"]);
# Add some error handling

# Get orientation
$orientation = $exif['Orientation'];

# Manipulate image
switch ($orientation) {
    case 2:
        imageflip($imageObject, IMG_FLIP_HORIZONTAL);
        break;
    case 3:
        $imageObject = imagerotate($imageObject, 180, 0);
        break;
    case 4:
        imageflip($imageObject, IMG_FLIP_VERTICAL);
        break;
    case 5:
        $imageObject = imagerotate($imageObject, -90, 0);
        imageflip($imageObject, IMG_FLIP_HORIZONTAL);
        break;
    case 6:
        $imageObject = imagerotate($imageObject, -90, 0);
        break;
    case 7:
        $imageObject = imagerotate($imageObject, 90, 0);
        imageflip($imageObject, IMG_FLIP_HORIZONTAL);
        break;
    case 8:
        $imageObject = imagerotate($imageObject, 90, 0); 
        break;
}

# Write image
imagejpeg($imageObject, $target_file, 75);

答案 1 :(得分:0)

创建图像保持宽高比:

答案是Here