iPhone ориентация изображения - вращение изображения автоматически с PHP, PEL, Image_moo - PullRequest
1 голос
/ 02 декабря 2011

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

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

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

Загружен файл Image_moo.

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

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

Мне кажется, я правильно понял оператор switch.

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

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

Марка

 $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 Ответ

3 голосов
/ 02 декабря 2011

Я не уверен насчет 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;
}
...
...