26.11.2017, 18:13
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Сообщение от laimas
|
JPEG формат не поддерживает анимацию, разберитесь что у вас сохранилось.
|
Да, я знаю, но не один раз встречала именно анимацию в формате jpg. Теперь Вы мне пояснили почему. Причем у меня показывает анимацию в трех разных браузерах.
Я так понимаю теперь все вшивки в exif, будут отсечены, а изменением размера можно уничтожить и в теле картинке? Но если размер изображения равен необходимому, можно это сделать двойным ресайзом, например, сначала увеличить на несколько пикселей, а потом вернуть к исходному. Или суть здесь, именно в измененном от начального размере.
Последний раз редактировалось Sonya, 26.11.2017 в 18:27.
|
|
26.11.2017, 18:21
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Sonya
|
не один раз встречала именно анимацию в формате jpg
|
Такой анимации нет, нет поддержки. Можно посредством JS устроить анимацию из нескольких jpeg изображений, либо спрайт таких изображений со встроенным SVG, который и занимается анимацией. Понятное дело, что попадись вам такой, GD его не откроет корректно, а если и сможет, то не сохранит.
|
|
26.11.2017, 18:26
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Да, и хостинг поддерживает ImageMagick, код от этого меняется?
|
|
26.11.2017, 18:33
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Sonya
|
Я так понимаю теперь все вшивки в exif, будут отсечены
|
Да, сохранится чистый ресурс, хотя при наличии exif их можно прочесть. Проверьте.
Сообщение от Sonya
|
а изменением размера можно уничтожить и в теле картинке?
|
Да. При выводе на экран изображений посредством GD, в случае предупреждений/ошибок в браузер будут выведено не изображение, а его бинарные данные. На это и расчет такого встраивания - запуск РНР кода встроенного в тело изображения. Для этого еще надо постараться, но ...
Сообщение от Sonya
|
Но если размер изображения равен необходимому, можно это сделать двойным ресайзом, например, сначала увеличить на несколько пикселей, а потом вернуть к исходному.
|
Я не знаю чего вы сохраняете и насколько требования к размерам, но конечно можно изменить, затем опять изменить.
|
|
26.11.2017, 18:38
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Sonya
|
Да, и хостинг поддерживает ImageMagick, код от этого меняется?
|
Конечно код будет иной. Причем API для работы с ImageMagick есть как расширение (во многом пока экспериментальное), но не поставляется вместе с РНР. Как у вас на хосте сказать не могу. Если нет поддержки со стороны РНР, то значит из командной строки запуск будет.
С GD просто проще, но она и более прожорлива и уступает во многом ImageMagick, хотя для вашей задачи вполне хватит.
|
|
26.11.2017, 18:41
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Сообщение от laimas
|
Я не знаю чего вы сохраняете и насколько требования к размерам, но конечно можно изменить, затем опять изменить.
|
Размер анимации 100х100, например, пользователь загружает её, я увеличиваю до 101х101, потом возвращаю к размеру 100х100 (будет незначительная потеря качества), таким образом я удалю вредоносный код из тела картинки?
|
|
26.11.2017, 19:04
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Sonya
|
пользователь загружает её, я увеличиваю до 101х101, потом возвращаю к размеру 100х100
|
Не получится - GD не работает с GIF анимацией, exif в данном файле нет, встраивать что-то в тело не имеет смысла, у данного типа сложный заголовок и не одна секция описания. Менять размеры не надо - проверили палитру - индексированная, значит просто сохраняем file_put_contents(...);
|
|
26.11.2017, 19:06
|
Кандидат Javascript-наук
|
|
Регистрация: 04.11.2017
Сообщений: 117
|
|
дадите ссылочку на ваше творение, хочется помотреть как не будет грузить сервер
|
|
26.11.2017, 19:14
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
laimas, спасибо.
Lion777, пока некондиция.
|
|
27.11.2017, 06:08
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Sonya,
сохранение в GIF, тоже некорректно:
file_put_contents('path/name.jpg', $f); //сохранение GIF/PNG8 -> GIF
Если исходное, это GIF, то все будет нормально, если же PNG8, то нет. Нужно дополнительно здесь проверять тип изображения и сохранять под соответствующим расширением.
|
|
|
|