首页 > 解决方案 > Exif 数据不旋转图像 php

问题描述

我已经尝试了很多我在互联网上找到的解决方案,但没有什么对我有用。我正在尝试调整图像大小和旋转图像取决于 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 数据中消失了,但是我上传的原始图像确实有方向信息。我不确定我错过了什么或做错了什么。有人可以帮我弄这个吗?

标签: phpjpegexif

解决方案


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


推荐阅读