Что только GIF? А если будет не этот формат?
|
Пользователь может загрузить только файлы с расширением png, jpg и gif (который в приоритете), на выходе получиться только gif. Читала, что и в целях безопасности это помогает. Читала, что и использование copy, не рекомендуется, но без примеров и указания в каких именно случаях. Посчитала, что в данном случае, это приемлемо, т.к. не увидела "подводных камней" (хотя, это и не говорит о том, что их там нет).
|
Сохранить JPEG, а тем более PNG в GIF, это урезать изображение до безобразия, да еще все и вслепую.
Если к изображению и "приклеят" непотребное, то от exif можно и избавиться, это не проблема. И сам по себе код вклеенный не выполнится, нужен "помощник". Если загрузка по ссылке, то так (используя GD): if($im = imagecreatefromstring(file_get_contents('url'))) { //обработка изображения $im, можно уменьшить его на один пиксель по ширине/высоте, //все что вклеили будет удалено //можно узнать палитру изображения, если индексированная, то сохранять в GIF //иначе сохранять как JPEG //все это функциями GD //стоит учесть, что если GIF анимация, то она будет утеряна, сохранится только первый ее кадр } else { //мусор } |
<?php $addrImage = 'https://javascript.ru/forum/images/ca_serenity/misc/logo.gif'; $testImage = exif_imagetype($addrImage); if ($testImage > 0 AND $testImage < 18) echo 'Данный файл изображение'; так можно и сделать что-бы корректно расширение создавалось, не наугад, а какое должно быть. |
laimas, спасибо, но дело в том, что это, как раз и есть анимированная картинка, поэтому ... Переформатирование картинок из png и jpg, не столь разительно в данном случае, поэтому особой роли не играет, тем более, что пользователь об этом предупрежден.
|
Цитата:
В противном случае сохраняем как GIF - file_put_contents(скачанное посредством file_get_contents). imagecreatefromstring здесь для того, чтобы отсеять мусор. Имейте ввиду и возможные большие размеры, это будет проблемой уже для file_get_contents, не говоря уже о GD. Если у вас на хосте доступен ImageMagick, то все операции лучше проделать в нем, он на гораздо большее способен, чем GD, включая и поддержку GIF анимации. GD же ее непосредственно не поддерживает, хотя можно и в нем, но писать свое уже. |
Lion777,
exif_imagetype - определяет расширение файла? |
laimas,
Спасибо, буду пробовать. |
Цитата:
imagecreatefromstring же, пытается открыть ресурс из строки, если прислали не изображение, то вернет false. |
по сигнатуре определяет тип файла, только изображения, посмотрите на php.net синтаксис.
|
Часовой пояс GMT +3, время: 18:10. |