首页 > 解决方案 > 警告 exif_read_data(php3KLADx):第 5 行的 /home/i/public_html/orientation.php 中不支持文件

问题描述

我让 exif 读取上传图像的方向。问题出在某些图像中,我收到此错误:

警告 exif_read_data(php3KLADx):第 5 行的 /home/i/public_html/orientation.php 中不支持文件

任何想法如何避免这种情况?

<?php
function exif_orientation($file_tmp) {

$image = imagecreatefromstring(file_get_contents($file_tmp));
$exif = exif_read_data($file_tmp);

if(!empty($exif['Orientation'])) {
    switch($exif['Orientation']) {
        case 8:
            $image = imagerotate($image,90,0);
            break;
        case 3:
            $image = imagerotate($image,180,0);
            break;
        case 6:
            $image = imagerotate($image,-90,0);
            break;
    }
    imagejpeg($image, $file_tmp, 90);
}
}
?>

标签: php

解决方案


你应该这样做如下:

if (!function_exists('imageOrientation'))
{
function imageOrientation(string $directory)
{
    if(file_exists($directory))
    {
        $destination_extension = strtolower(pathinfo($directory, PATHINFO_EXTENSION));
        if(in_array($destination_extension, ["jpg","jpeg"]) && exif_imagetype($directory) === IMAGETYPE_JPEG)
        {
            if(function_exists('exif_read_data'))
            {
                $exif = exif_read_data($directory);
                if(!empty($exif) && isset($exif['Orientation']))
                {
                    $orientation = $exif['Orientation'];
                    switch ($orientation)
                    {
                        case 2:
                            $flip = 1;
                            $deg = 0;
                            break;
                        case 3:
                            $flip = 0;
                            $deg = 180;
                            break;
                        case 4:
                            $flip = 2;
                            $deg = 0;
                            break;
                        case 5:
                            $flip = 2;
                            $deg = -90;
                            break;
                        case 6:
                            $flip = 0;
                            $deg = -90;
                            break;
                        case 7:
                            $flip = 1;
                            $deg = -90;
                            break;
                        case 8:
                            $flip = 0;
                            $deg = 90;
                            break;
                        default:
                            $flip = 0;
                            $deg = 0;
                    }
                    $img = imagecreatefromjpeg($directory);
                    if($deg !== 1 && $img !== null)
                    {
                        if($flip !== 0)
                        {
                            imageflip($img,$flip);
                        }
                        $img = imagerotate($img, $deg, 0);
                        imagejpeg($img, $directory);
                    }
                }
            }
        }
    }
}
}

推荐阅读