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

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

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

  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. }
После этого загружаемые фотки будут автоматически поворачиваться.
0
Erwin Erwin 8 лет назад #
Вот это автоматизация, только положительная оценка
0
irbis irbis 8 лет назад #
Отличное решение! А то держатели яблок и старых версий Android надоели жаловаться на то, что их фото грузится перевернутым.
Лично у меня на Android 5.1.1 проблем не было. Фотографировал и вертикально и горизонтально - всегда прямо вставала.
От меня +1!
0
Сергей Игоревич Сергей Игоревич 8 лет назад #
Canon и Nikon тоже не поворачивают фото а просто пишут в EXIF
0
Шадринец Шадринец 8 лет назад #
Почемуто у меня не работает на 1.10.1 вот на этом сайте У дачный сайт.
0
Сергей Игоревич Сергей Игоревич 8 лет назад #
наверно там ещё в другом месте где то обработка кода...
0
Александр Александр 7 лет назад #
Очень жалко, что не работает. sad
Отличная идея,

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

http://instantcms.ru/forum/thread23497-1.html#224748
+1
Александр Александр 7 лет назад #
Поставил плюс, спасибо большое.

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



/core/cms.php

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

P.S. может надо по умолчанию сделать в движках автоповорот? или это давно уже есть в новых версиях? просто у меня старая еще установлена) Хотя даже во второй походу нету из коробки, так как тема свежая на форуме.
+1
Александр Александр 7 лет назад #
тут надо закоментировать все кроме jpeg так как будут проблемы с загрузкой PNG картинками.

Еще от автора

Редирект при логине
Меня жутко бесит на сайтах, когда ходишь по нему, не замечаешь что залогинен, а потом надо зайти в раздел который только для пользователей.
Компонент AjaxChat для 1.10.3+
Лёгкое обновление компонента AjaxChat 0.
Бесплатный компонент погоды
2 года назад я выпустил компонент погода который благодоря пользователю DEOVER стал внезапно снова кому то нужен😊 Однако сайт с которого парсилась пог
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.