Как остановить автоповорот изображений в PHP iMagick на основе данных EXIF ​​«ориентация»

В настоящее время я работаю с PHP и iMagick для разработки веб-приложения для печати плакатов.

Это пример изображения Я использую для тестирования функций загрузки / редактирования изображений в приложении:

alt text

Изображение содержит следующие данные 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 ' редактируя это изображение, автоматически поворачивает его еще на 90 градусов против часовой стрелки согласно [Orientation] => 6 (я думаю!). В результате ...

alt text

Я хотел бы знать ...

Как я могу сохранить исходную ориентацию изображения, отображаемого вверху страницы? И возможно ли это, отключив автоповорот, выполняемый 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;

       }

 }
21
задан kaese 26 November 2010 в 10:44
поделиться