iPhone ориентация изображения - вращение изображения автоматически с PHP, PEL, Image_moo

Я пытаюсь повернуть загруженные изображения перед сохранением, основываясь на теге EXIF ​​ORIENTATION.

Я проверил каждую часть кода отдельно, и все, кажется, работает само по себе.

$ new - это правильный путь и имя файла.

Image_moo был загружен.

PEL (библиотека PHP EXIF) [http://lsolesen.github.com/pel/] загружен.

Изображения имеют данные EXIF, включая вращение.

Я верю, что правильно понял утверждение о переключении.

Код не вызывает никаких ошибок, он просто не поворачивает изображение.

Что я пропускаю или делаю неправильно?

отметка

 $new = the file that was just uploaded
 ...
 $ext = strtolower($path_parts['extension']);
 ...

  if($ext == 'jpg'){
  $input_jpg = new PelJpeg($new);
  $exif = $input_jpg->getExif();
  if($exif !== NULL){
  $tiff = $exif->getTiff();
  $ifd0 = $tiff->getIfd();
  if($orient = $ifd0->getEntry(PelTag::ORIENTATION)){
     $this->image_moo->load($new);
     $orient = str_replace(' ', '', $orient);
     if (($tmp = strstr($orient, 'Value:')) !== false) {
          $str = substr($tmp, 6, 1);//Get the value of the ORIENTATION tag
     }
     $this->image_moo->load($new);
     switch ($str)
     {
     case 8:
        $this->image_moo->rotate(270);
        break;
     case 3:
        $this->image_moo->rotate(180);
        break;
     case 6:
        $this->image_moo->rotate(90);
        break;
     case 1:
        break;
     }
     $this->image_moo->save($new, TRUE);
 }
 $output_jpg = new PelJpeg($new);
 $output_jpg->setExif($exif);
 $output_jpg->saveFile($new);
}
}

1 ответ

Решение

Я не уверен насчет PelJpeg но в Imagick я делаю:

...
switch( $imagick->getImageOrientation() ){
    case 6:
        $imagick->rotateImage(new ImagickPixel(), 90);
        $imagick->setImageOrientation(1);
    break;
    case 8:
        $imagick->rotateImage(new ImagickPixel(), 270);
        $imagick->setImageOrientation(1);
    break;
}
...
Другие вопросы по тегам