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;
}
...