Exif 'yönelimi' verilere dayalı PHP Imagick otomatik dönen görüntüleri durdurmak için nasıl

0 Cevap php

Şu anda bir poster baskı Web uygulaması geliştirmek için PHP ve Imagick'teki ile çalışıyor.

Bu benim uygulama yükleme / görüntü düzenleme özellikleri test etmek için kullanıyorum örnek görüntü:

alt text

Görüntü aşağıdaki EXIF ​​verileri içerir:

[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

Ancak - (! Bence) __ bu görüntü ile construct'ed Imagick, otomatik başına [Orientation] => 6 olarak buna bir ilave 90 derece SOLA döner. Bu Sonuçlanabilecek ...

alt text

Ne bilmek istiyorum bir ...

Nasıl sayfanın üst kısmında görülen görüntünün orijinal yönünü koruyabilirsiniz? Ve bu Imagick tarafından gerçekleştirilen otomatik rotasyon devre dışı bırakma ile mümkündür?

Çok teşekkürler

UPDATE: Here's the solution I've come up with... It will fix the orientation based on the orientation in the EXIF data

   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;

       }

 }

0 Cevap