如何停止 PHP iMagick 基于 EXIF“方向”数据自动旋转图像
2022-08-30 15:56:14
目前与PHP和iMagick合作开发海报打印Web应用程序。
这是我用来测试应用程序的上传/图像编辑功能的示例图像:
该映像包含以下 EXIF 数据:
[FileName] => 1290599108_IMG_6783.JPG
[FileDateTime] => 1290599109
[FileSize] => 4275563
[FileType] => 2
[MimeType] => image/jpeg
[SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF, INTEROP, MAKERNOTE
[COMPUTED] => Array
(
[html] => width="3504" height="2336"
[Height] => 2336
[Width] => 3504
[IsColor] => 1
[ByteOrderMotorola] => 0
[CCDWidth] => 22mm
[ApertureFNumber] => f/5.6
[UserComment] =>
[UserCommentEncoding] => UNDEFINED
[Thumbnail.FileType] => 2
[Thumbnail.MimeType] => image/jpeg
)
[Make] => Canon
[Model] => Canon EOS 30D
[Orientation] => 6
[XResolution] => 72/1
[YResolution] => 72/1
[ResolutionUnit] => 2
[DateTime] => 2009:08:31 08:23:49
[YCbCrPositioning] => 2
[Exif_IFD_Pointer] => 196
但是 - iMagick,当使用此图像__construct时,会根据CCW自动将其旋转90度(我认为!导致此...[Orientation] => 6
我想知道的是...
如何保持页面顶部显示的图像的原始方向?这是否可以通过禁用iMagick执行的自动旋转来实现?
非常感谢
更新:这是我想出的解决方案...它将根据 EXIF 数据中的方向修复方向
public function fixOrientation() {
$exif = exif_read_data($this->imgSrc);
$orientation = $exif['Orientation'];
switch($orientation) {
case 6: // rotate 90 degrees CW
$this->image->rotateimage("#FFF", 90);
break;
case 8: // rotate 90 degrees CCW
$this->image->rotateimage("#FFF", -90);
break;
}
}