Подпираем костылём EXIF
Школьная задачка.
Дано: есть вертикальная фотка в горизонтальном файле размером 2016х1512 и метаданными EXIF, куда её вращать.
Поведение: phpthumb фотку послушно поворачивает, но вот обрезку делает по исходному горизонтальному формату.
Найти: смысл жизни в форме правильно обрезанной фотки.
В исходниках phpthumb и премудростях $this->source_width, $this->source_height я не разобрался, поэтому решил задачу двухколесным другом — поворачиваю исходную фотку согласно EXIF перед тем как она попадет в phpthumb.
Создал плагин на событие OnFileManagerFileCreate:
Дано: есть вертикальная фотка в горизонтальном файле размером 2016х1512 и метаданными EXIF, куда её вращать.
Поведение: phpthumb фотку послушно поворачивает, но вот обрезку делает по исходному горизонтальному формату.
Найти: смысл жизни в форме правильно обрезанной фотки.
В исходниках phpthumb и премудростях $this->source_width, $this->source_height я не разобрался, поэтому решил задачу двухколесным другом — поворачиваю исходную фотку согласно EXIF перед тем как она попадет в phpthumb.
Создал плагин на событие OnFileManagerFileCreate:
<?php
if (file_exists($path) && exif_imagetype($path) == IMAGETYPE_JPEG) {
if ($exif_data = @exif_read_data($path, 'IFD0')) {
switch (@$exif_data['Orientation']) {
case 6:
$rotate_angle = 270;
break;
case 8:
$rotate_angle = 90;
break;
}
}
if (!empty($rotate_angle)) {
$gd = imagecreatefromjpeg($path);
$rotate = imagerotate($gd, $rotate_angle, 0);
imagejpeg($rotate,$path,100);
}
}p.s. если у кого-то появился азарт пофиксить и сделать правильно — делитесь решением ;) Комментарии: 2
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Функция:
Обработка:
Источник: php.net/manual/en/imagick.getimageorientation.php