【发布时间】:2021-09-08 22:06:47
【问题描述】:
我已经尝试了很多在互联网上找到的解决方案,但没有一个对我有用。我正在尝试调整图像大小和旋转图像取决于 exif 数据,但图像没有旋转。调整图像大小工作正常。但是旋转不起作用。以下是我用来执行此操作的函数。
function resize_imageb($newbfile,$max_resolution){
if(file_exists($newbfile)){
$original_image = imagecreatefromjpeg($newbfile);
$exif = exif_read_data($newbfile, 0, true);
if(!empty($exif['Orientation'])) {
switch($exif['Orientation']) {
case 8:
$original_image = imagerotate($original_image,90,0);
break;
case 3:
$original_image = imagerotate($original_image,180,0);
break;
case 6:
$original_image = imagerotate($original_image,-90,0);
break;
}
}
$original_width = imagesx($original_image);
$original_height = imagesy($original_image);
$ratio = $max_resolution/$original_width;
$new_width = $max_resolution;
$new_height = $original_height * $ratio;
if($new_height > $max_resolution){
$ratio = $max_resolution / $original_height;
$new_height = $max_resolution;
$new_width = $original_width * $ratio;
}
if($original_image){
$new_image = imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($new_image, $original_image, 0, 0, 0, 0,$new_width, $new_height, $original_width, $original_height);
imagejpeg($new_image,$newbfile,100);
imagedestroy($original_image);
imagedestroy($new_image);
}
}
}
当我检查调整大小的图像时,方向信息从 exif 数据中消失了,但是我上传的原始图像确实有方向信息。我不确定我错过了什么或做错了什么。有人可以帮我解决这个问题吗?
【问题讨论】:
-
你能告诉我们EXIF的内容吗?还有
$exif['Orientation']中的值是多少,您能记录一下并告诉我们值吗? -
IFD0.Orientation: 6,它是我在检查我上传的原始图像的日志时得到的值
-
您可以尝试将旋转角度从
-90替换为270吗?我认为不允许使用负数。所以喜欢应该是$original_image = imagerotate($original_image,270,0); -
是的,但是您正在以负角 -90 调用
imagerotate函数。您可以尝试使用正角:270 吗? -
仍然有同样的问题。