Автоповорот изображений 1.10+

1944
Итак, для тех у кого нормальные фотоаппараты и тысячи фоток на сайте. Сегодня меня задолбало переворачивать очередную тысячу фоток и вот мой хак для автовращения.
Итак нам понадобится файл core/classes/upload_photo.class.php

После этой строки
Код PHP:
  1. if (cmsCore::moveUploadedFile($source, $uploadphoto, $errorCode)) {
вставляем:
Код PHP:
  1. $this->rotateImg($uploadphoto,$ext);
В конце файла, перед последней } пишем:

Код PHP:
  1. public function rotateImg($file='',$ext)
  2. {
  3. if (!($file && $this->upload_dir && $ext)) { return false; }
  4. $exif = exif_read_data($file);
  5. if(!empty($exif['Orientation'])) {
  6. switch($exif['Orientation']) {
  7. case 8:
  8. $image = imagerotate($image,90,0);
  9. break;
  10. case 3:
  11. $image = imagerotate($image,180,0);
  12. break;
  13. case 6:
  14. $image = imagerotate($image,-90,0);
  15. break;
  16. default:
  17. return false;
  18. }
  19.  
  20. switch($ext){
  21. case "jpg":
  22. case "jpeg":
  23. imagejpeg($image,$file,100);
  24. break;
  25. case "png":
  26. imagepng($image,$file,100);
  27. break;
  28. case "gif":
  29. imagegif($image,$file);
  30. break;
  31. default:
  32. return false;
  33. }
  34. return true;
  35. }
  36. return false;
  37. }
После этого загружаемые фотки будут автоматически поворачиваться.
Компонент AjaxChat для 1.10.3+ | Редирект при логине
Комментарии (8)
Erwin 23 сентября 2015 в 17:34 0
Вот это автоматизация, только положительная оценка
irbis 23 сентября 2015 в 20:08 0
Отличное решение! А то держатели яблок и старых версий Android надоели жаловаться на то, что их фото грузится перевернутым.
Лично у меня на Android 5.1.1 проблем не было. Фотографировал и вертикально и горизонтально - всегда прямо вставала.
От меня +1!
Сергей Игоревич 24 сентября 2015 в 09:16 0
Canon и Nikon тоже не поворачивают фото а просто пишут в EXIF
Шадринец 7 октября 2015 в 16:30 0
Почемуто у меня не работает на 1.10.1 вот на этом сайте У дачный сайт.
Сергей Игоревич 7 октября 2015 в 16:33 0
наверно там ещё в другом месте где то обработка кода...
Александр 6 февраля 2017 в 03:18 0
Очень жалко, что не работает. sad
Отличная идея,

а может возможно от 2 взять суда?

http://instantcms.ru/forum/thread23497-1.html#224748
Александр 6 февраля 2017 в 17:52 0
Поставил плюс, спасибо большое.

Что то не работало и попросил лучшего друга помочь с данным решением, во-общем получилось поворачивать в общих альбомах, а в личных не работало, потом чтоб везде работало не стали в каждом месте исправлять, тупо в ядро внесли изменения.



/core/cms.php

Код PHP:
  1.  
  2. $size = getimagesize($source);
  3. if (is_array($size)) {
  4. $formats = array(
  5. 1 => 'gif',
  6. 2 => 'jpeg',
  7. 3 => 'png',
  8. 6 => 'wbmp',
  9. 15 => 'wbmp'
  10. );
  11. $format = @$formats[$size[2]];
  12. $icfunc = "imagecreatefrom" . $format;
  13. $imfunc = "image" . $format;
  14.  
  15. $isrc = $icfunc($source);
  16.  
  17. // Прочитать данные EXIF
  18. $exif = exif_read_data($source);
  19. if (!empty($exif['Orientation'])) {
  20. switch ($exif['Orientation']) {
  21. // Поворот на 180 градусов
  22. case 3: {
  23. $isrc = imagerotate($isrc,180,0);
  24. break;
  25. }
  26. // Поворот вправо на 90 градусов
  27. case 6: {
  28. $isrc = imagerotate($isrc,-90,0);
  29. break;
  30. }
  31. // Поворот влево на 90 градусов
  32. case 8: {
  33. $isrc = imagerotate($isrc,90,0);
  34. break;
  35. }
  36. }
  37. }
  38. $imfunc($isrc,$source,100);
  39. imagedestroy($isrc);
  40. }
если, что то не правильно подскажите пожалуйста, или знаете как лучше, заранее благодарю. от себя хочу сказать огромное спасибо моему лучшему другу, что не опустил руки в отличии от меня и смог помочь мне сделать так, что все заработало. Отдельные благодарности: Старому балбесу и Сергею Игоревичу, за-то что подняли данную тему про автопереворот, и предоставили как для первой так и для второй версии движка мануал.

P.S. может надо по умолчанию сделать в движках автоповорот? или это давно уже есть в новых версиях? просто у меня старая еще установлена) Хотя даже во второй походу нету из коробки, так как тема свежая на форуме.
Александр 9 февраля 2017 в 00:58 0
тут надо закоментировать все кроме jpeg так как будут проблемы с загрузкой PNG картинками.