Шпаргалка.
Вертикальные фотографии, снятые в портретном режиме на Android и iPhone сохраняются как горизонтальные, но в EXIF пишется ориентация фото.
Если вывести значение команды:
$exif = exif_read_data( $existingFilePath, 0, true);
То увидим среди значений массива:
array
(
...
[IFD0] => Array
(
[Make] => Sony
[Model] => LT25i
[Orientation] => 6
[XResolution] => 72/1
[YResolution] => 72/1
[ResolutionUnit] => 2
[Software] => 9.1.A.1.145_58_f100
[DateTime] => 2013:07:26 17:00:01
[YCbCrPositioning] => 1
[Exif_IFD_Pointer] => 214
[GPS_IFD_Pointer] => 626
)
...
)
В данном случае это значит, что при показе этой фотографии - отображающее его приложение должно повернуть на 90 градусов фото, т.к. фото в портретной ориентации.
Чтобы при заливке картинок на сервер и изменении их (создание уменьшенной копии, создание превьюшки) не было косяков, можно определять такие фотки кодом:
<?php
imagecopyresampled( $resultImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
$exif = exif_read_data( $existingFilePath, 0, true);
if( false === empty( $exif['IFD0']['Orientation'] ) ) {
switch( $exif['IFD0']['Orientation'] ) {
case 8:
$resultImage = imagerotate( $resultImage, 90, 0 );
break;
case 3:
$resultImage = imagerotate( $resultImage,180,0);
break;
case 6:
$resultImage = imagerotate( $resultImage,-90,0);
break;
}
}
Что интересно - Windows Phone сохраняет фотографию в портретной ориентации как вертикальное изображение.