Kim*_*Kim 1 php image rotation
我正在构建一个应用程序,您可以使用手机拍照并上传图像,但您拍摄的肖像图像会自动旋转为横向方向。相信我,我在发布之前已经尝试了很多并进行了研究!
我在 PHP 方面没有高级技能,但我有下面的代码可以很好地处理调整大小,但它不执行旋转。
有人看到它有什么直接问题吗?
// resizeImage
function loadResize($imageName, $imageWidth, $imageHeight, $resizeType) {
list($width, $height, $type, $attr) = getimagesize($imageName);
if($resizeType=="portrait" && $height<=$imageHeight) {
return;
}
if($resizeType=="landscape" && $width<=$imageWidth) {
return;
}
$exif = exif_read_data($imageName);
if (!empty($exif['Orientation'])) {
switch ($exif['Orientation']) {
case 3:
$imageName = imagerotate($imageName, 180, 0);
break;
case 6:
$imageName = imagerotate($imageName, -90, 0);
break;
case 8:
$imageName = imagerotate($imageName, 90, 0);
break;
}
}
// *** 1) Initialise / load image
$resizeObj = new resize($imageName);
// *** 2) Resize image (options: exact, portrait, landscape, auto, crop)
$resizeObj -> resizeImage($imageWidth, $imageHeight, $resizeType);
// *** 3) Save image
$resizeObj -> saveImage($imageName, 100);
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
您在示例中没有调用 loadResize 函数。
使用GD库的解决方案。此解决方案仅查找 exif 数据以查看图像是否应旋转。它不符合实际的纵横比。
<?php
$imageName = "image.jpg";
$exif = exif_read_data($imageName);
if (!empty($exif['Orientation'])) {
switch ($exif['Orientation']) {
case 3:
$angle = 180 ;
break;
case 6:
$angle = -90;
break;
case 8:
$angle = 90;
break;
default:
$angle = 0;
break;
}
}
if (preg_match("/.*\.jpg/i", $imageName))
$source = imagecreatefromjpeg($imageName);
else
$source = imagecreatefrompng($imageName);
$source = imagerotate($source, $angle, 0);
imagejpeg($source, $imageName);
?>
Run Code Online (Sandbox Code Playgroud)