【问题标题】:Exif data doesn't roate the image phpExif 数据不旋转图像 php
【发布时间】: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 吗?
  • 仍然有同样的问题。

标签: php jpeg exif


【解决方案1】:

我没有在一个函数中执行两部分(调整大小和旋转),而是制作了两个函数,一个用于旋转created by Wes,然后用于调整大小。先调用旋转函数,再调用resize函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2015-03-30
    • 1970-01-01
    • 2011-11-02
    • 2013-11-17
    相关资源
    最近更新 更多