現在、PHPとiMagickを使用して、ポスター印刷Webアプリケーションを開発しています。EXIF「オリエンテーション」データに基づいてPHP iMagick自動回転イメージを停止する方法
これは、例えば、画像Iは、アプリケーションのアップロード/画像編集機能をテストするために使用しています:しかし
[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:
画像には、以下のEXIFデータが含まれています、この画像で__construct'edされると、それは自動的に[Orientation] => 6
(私は思う!)に従ってCCWを追加90度回転させます。 ...私は知りたいのですがどのような
さ...この中で
の結果としてどのように私は、ページの上部に見える画像の元の向きを維持することができますか?これは、iMagickによって実行される自動回転を無効にすることによって可能ですか?
感謝
UPDATE:ここで私は...それは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;
}
}
ありがとうizym。これらの定数がどのように使われるかについての情報はありますか? – kaese
Imagick :: setImageOrientation()は実際に画像を回転させないことに注意してください。画像と共に保存されるEXIF回転情報が変更されます。いくつかのケースでは、あなたがやりたいことかもしれませんが、実際にはイメージを実際に物理的に回転させる方が良いでしょう(答えとして投稿したコードサンプルを参照)。 EXIF回転情報に頼っている問題は、すべてのWebブラウザと画像閲覧ソフトウェアが自動的に正しく向きを変えるわけではないということです。 – orrd