如果我用相机拍照,它会存储设备的方向/角度,因此当我使用良好的应用程序在 PC 上查看图像时,它会显示自动旋转到 0。
但是当我上传到网站时,它显示的是原始角度,所以图像看起来不太好。
我怎样才能用 PHP 检测到这一点并旋转图像,并从它的元信息中清除这个角度标志。
我修改了 Chris 的示例,添加了对 exif 函数的检查,删除了镜像,并使用相同的文件名将文件写回文件系统。这样,您可以在调用 move_uploaded_file 之后立即调用此函数,如下所示:
move_uploaded_file($uploadedFile, $destinationFilename);
correctImageOrientation($destinationFilename);
function correctImageOrientation($filename) {
if (function_exists('exif_read_data')) {
$exif = exif_read_data($filename);
if($exif && isset($exif['Orientation'])) {
$orientation = $exif['Orientation'];
if($orientation != 1){
$img = imagecreatefromjpeg($filename);
$deg = 0;
switch ($orientation) {
case 3:
$deg = 180;
break;
case 6:
$deg = 270;
break;
case 8:
$deg = 90;
break;
}
if ($deg) {
$img = imagerotate($img, $deg, 0);
}
// then rewrite the rotated image back to the disk as $filename
imagejpeg($img, $filename, 95);
} // if there is some rotation necessary
} // if have the exif orientation info
} // if function exists
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)