Изображение с автоповоротом в icms 2.x
Возможно ли сделать автоповорот изображений? Например добавляются объявления с телефона и все фотографии получаются боком!
Судя по Интернет поиску скрипт простой, но он до сих пор не внедрен в iCMS или я как всегда не вижу той волшебной галочки!?
не могу предполагать что имел ТС, но ответ был дан в части "автоповорот изображений".полагаю ТС имеет ввиду
Это конечно хорошо, но мы говорим о адаптивности системы, т.е. большинство юзверей уже используют телефоны и планшеты (без IXIF). И загружая на большинство сайтов проблем таких нет, во многих cms этот вопрос уже давно решен, на сколько мне известно (не говоря уже о соцсетях).Решение будет работать если фото которые загружаются будут иметь блок IXIF информации
Уважаемый Скела вы хотя бы попытались понять что я Вам ответил, как раз все фото которые сделаны планшетами, смартфонами, имеют в себе блок exif информации о типе камеры, местоположении, где было снято фото, а также о повороте камеры.Это конечно хорошо, но мы говорим о адаптивности системы, т.е. большинство юзверей уже используют телефоны и планшеты (без IXIF). И загружая на большинство сайтов проблем таких нет, во многих cms этот вопрос уже давно решен, на сколько мне известно (не говоря уже о соцсетях).
Суть в другом что могут грузить фото без данного блока и механизм не будет просто напросто работать, на базе чего должен скрипт определить куда повернуть фото? или вы предлагаете запилить в icms систему ИИ для определения объектов на фото и анализе того что там изображено?
Как вариант www.manhunter.ru/webmaster/892_povorot_izobrazheniya_na_osnovanii_dannih_exif.htmlНужна просто опция ручного поворота изображения пользователем
Ниже готовое решение.
В оригинале фото (камера Olimpus) — стояло значение тега orientattion Mirror Horisontal,
Изменил оригинал в программе ExifPilot установив значение тега orientation Rotate CW 90
После загрузки в качестве водяного знака.
Видно что изображение повернуто а затем обрезано и уменьшено..
Решение может и не оригинальное но рабочее .
Работает только в JPEG-файлах.
Заменить в файле system/core/uploader функцию public function imageCopyResized на модифицированную :
public function imageCopyResized($src, $dest, $maxwidth, $maxheight, $is_square = false, $quality = 100) { return false; } } # чтение файла $orientation=0; $section_id=$tmp[1]; $section_length=$tmp[1]; # Началась секция данных, заканчиваем поиск break; } # Найдена EXIF-секция if ($section_id==0xFFE1) { # Это действительно секция EXIF? # Определить порядок следования байт case 'MM': { $is_motorola=true; break; } case 'II': { $is_motorola=false; break; } } # Количество тегов if ($is_motorola) { $offset_tags=$tmp[1]; $num_of_tags=$tmp[1]; } else { $offset_tags=$tmp[1]; $num_of_tags=$tmp[1]; } if ($num_of_tags==0) { return true; } $offset=$offset_tags+8; # Поискать тег Orientation for ($i=0; $i<$num_of_tags; $i++) { if ($is_motorola) { $tag_id=$tmp[1]; $value=$tmp[1]; } else { $tag_id=$tmp[1]; $value=$tmp[1]; } $offset+=12; # Orientation if ($tag_id==0x0112) { $orientation=$value; break; } } } } else { # Пропустить секцию } # Тег Orientation найден if ($orientation) { break; } } } if ($size === false) { return false; } $new_width = $size[0]; $new_height = $size[1]; if (($new_height <= $maxheight) && ($new_width <= $maxwidth)) { return true; } $icfunc = "imagecreatefrom" . $format; return false; } $isrc = $icfunc($src); # ориентация if ($orientation) { switch($orientation) { # Поворот на 180 градусов case 3: { break; } # Поворот вправо на 90 градусов case 6: { break; } # Поворот влево на 90 градусов case 8: { break; } } } if ($is_square) { if ($new_width > $new_height) if ($new_width < $new_height)
А зачем такой комбайн изобретать разбирать заголовки самому? если вы используете дальше GD😊
switch($exif['Orientation']) { case 8: break; case 3: break; case 6: break; } }
Я думаю вы не единственный кто знает о exif_read_data?А зачем такой комбайн изобретать разбирать заголовки самому? если вы используете дальше GD
maxisoft сперва следовало подробнее ознакомиться с текстом описания решения автора, www.manhunter.ru/webmaster/892_povorot_izobrazheniya_na_osnovanii_dannih_exif.html
Где описаны некоторые проблемы которые безусловно нужно учитывать.
Я это решение выполнил на коленках, взяв первое попавшееся (на мой взгляд) правильное решение.
Мои действия несут в себе хоть и малую но логическую составляющую, с примером реализации данного вопроса.
maxisoft сперва следовало подробнее ознакомиться с текстом описания решения автора, www.manhunter.ru/webmaster/892_povorot_izobrazheniya_na_osnovanii_dannih_exif.html
Где описаны некоторые проблемы которые безусловно нужно учитывать.
Зачет.
maxisoft, я не предлагаю ИИ, я просто в замешательстве. Просто представьте, что каждый добавляющий с телефона закидывает фотографии боком и ничего с этим не может поделать.
Действительно лучшим решением была бы возможность вращать изображение самостоятельно.
Вот поэтому стоит немного правильнее ставить задачу, ведь от того как поставить задачу и вопрос и предлагается решение.Действительно лучшим решением была бы возможность вращать изображение самостоятельно.