早睡早起,方能养生
Sleep early rise early, way to keep healthy

PHP获取图片宽高时,宽度与高度相反 phpexif_read_data函数

super
2022-06-11 10:34
views 1944

使用getimagesize或者getID3获取图片信息时,图片高度与宽度相反

 

 

 

目前发现这个现象仅存在于IPhone拍出的照片

 

解决方法:

 

1)开启PHP exif拓展,PHP7.4版本默认是关闭的

 

 

注意:需同时打开mbstring拓展,他们有依赖

 

2)在解析图片之前先处理图片

 

$imgsrc = './your_image.jpg';

try {
	$exif = exif_read_data($imgsrc, 0,true);
} catch (Exception $e) {
	$exif = false;
}

if ($exif !== false) {
    if(isset($exif['IFD0']['Orientation'])) {
        $source = imagecreatefromjpeg($imgsrc);
        // 判断翻转角度
        switch ($exif['IFD0']['Orientation']) {
            case 8:
                $image = imagerotate($source, 90, 0);
                break;
            case 3:
                $image = imagerotate($source, 180, 0);
                break;
            case 6:
                $image = imagerotate($source, -90, 0);
                break;
        }
        if (isset($image)) {
        	// 保存到本地
        	imagejpeg($image, $imgsrc);
        	// 销毁
        	imagedestroy($image);
        }
    }
}

 

3)再次解析图片

 

print_r( getimagesize($imgsrc));

 

 

解析正常

 



分享
0 条讨论
top