如何将iPhone颠倒拍摄的照片自动翻转过来?
- 内容介绍
- 文章标签
- 相关推荐
本文共计440个文字,预计阅读时间需要2分钟。
使用iPhone横拍并上传的图片,往往显示为向左或向右90度倾斜。以下是用PHP识别并旋转图片到正确位置的方法:
phpgetImageOrientation(); return $orientation;}
// 旋转图片到正确位置function rotateImage($imagePath, $outputPath) { $image=new Imagick($imagePath); $orientation=$image->getImageOrientation();
switch ($orientation) { case Imagick::ORIENTATION_TOPRIGHT: $image->rotateImage(new ImagickPixel('white'), 90); break; case Imagick::ORIENTATION_BOTTOMRIGHT: $image->rotateImage(new ImagickPixel('white'), 180); break; case Imagick::ORIENTATION_BOTTOMLEFT: $image->rotateImage(new ImagickPixel('white'), 270); break; case Imagick::ORIENTATION_LEFTTOP: $image->rotateImage(new ImagickPixel('white'), 270); break; default: // 如果图片不需要旋转,则直接输出 $image->writeImage($outputPath); return; }
// 保存旋转后的图片 $image->writeImage($outputPath);}
// 示例使用$imagePath='path/to/your/image.jpg';$outputPath='path/to/your/output/image.jpg';
$orientation=checkImageOrientation($imagePath);if ($orientation !==Imagick::ORIENTATION_UP) { rotateImage($imagePath, $outputPath); echo 图片已旋转到正确位置。\n;} else { echo 图片无需旋转。\n;}?>
此方法仅能判断一些手机相机拍摄的图片是否需要旋转,并不能处理所有情况。
用iphone横向拍摄并上传的图片往往是向左或向右90度侧向显示的,本文介绍如何用php识别并且翻转图片到正确位置。
ps : 此方法只能判断一些手机相机拍摄的图片位置颠倒
代码:
// 首先用这个函数读取图片的一些头信息 // 原理就是在头信息中取出图片的位置信息 并且根据位置信息对图片做出调整 // 此函数只能处理jpeg 与 tiff 的图片格式 $exif = exif_read_data ($url,0,true); if(isset($exif['IFD0']['Orientation'])){ $source = imagecreatefromjpeg($url);//读取图片流 //判断角度翻转 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; } //保存到本地 imagejpeg($image,'../storage/tmp.jpeg'); //释放内存 imagedestroy($image); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。
本文共计440个文字,预计阅读时间需要2分钟。
使用iPhone横拍并上传的图片,往往显示为向左或向右90度倾斜。以下是用PHP识别并旋转图片到正确位置的方法:
phpgetImageOrientation(); return $orientation;}
// 旋转图片到正确位置function rotateImage($imagePath, $outputPath) { $image=new Imagick($imagePath); $orientation=$image->getImageOrientation();
switch ($orientation) { case Imagick::ORIENTATION_TOPRIGHT: $image->rotateImage(new ImagickPixel('white'), 90); break; case Imagick::ORIENTATION_BOTTOMRIGHT: $image->rotateImage(new ImagickPixel('white'), 180); break; case Imagick::ORIENTATION_BOTTOMLEFT: $image->rotateImage(new ImagickPixel('white'), 270); break; case Imagick::ORIENTATION_LEFTTOP: $image->rotateImage(new ImagickPixel('white'), 270); break; default: // 如果图片不需要旋转,则直接输出 $image->writeImage($outputPath); return; }
// 保存旋转后的图片 $image->writeImage($outputPath);}
// 示例使用$imagePath='path/to/your/image.jpg';$outputPath='path/to/your/output/image.jpg';
$orientation=checkImageOrientation($imagePath);if ($orientation !==Imagick::ORIENTATION_UP) { rotateImage($imagePath, $outputPath); echo 图片已旋转到正确位置。\n;} else { echo 图片无需旋转。\n;}?>
此方法仅能判断一些手机相机拍摄的图片是否需要旋转,并不能处理所有情况。
用iphone横向拍摄并上传的图片往往是向左或向右90度侧向显示的,本文介绍如何用php识别并且翻转图片到正确位置。
ps : 此方法只能判断一些手机相机拍摄的图片位置颠倒
代码:
// 首先用这个函数读取图片的一些头信息 // 原理就是在头信息中取出图片的位置信息 并且根据位置信息对图片做出调整 // 此函数只能处理jpeg 与 tiff 的图片格式 $exif = exif_read_data ($url,0,true); if(isset($exif['IFD0']['Orientation'])){ $source = imagecreatefromjpeg($url);//读取图片流 //判断角度翻转 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; } //保存到本地 imagejpeg($image,'../storage/tmp.jpeg'); //释放内存 imagedestroy($image); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

