|
|
|
| Такая проблема: через форму передаётся файл (причём пользователь теоретьически может закинуть всё что угодно). Идёт проверка по $_FILES mime-type, то есть сравнивается, и если картинка имеет тип image/jpeg, то она преобразовывается в нужное разрешение. Так вот, пробовал картинку 1.png переименовать в 1.jpg - mime-type был image/jpeg. Функция по преобразованию картинки выдала ошибку. Как можно более достоверно определить, что картинка именно jpeg?
А ещё, было бы хорошо, если бы когда пользователь нажимает "обзор", чтобы выбрать файл, там был фильтр *.jpg, так было бы проще и юзеру, и меньше всякой гадости бы на сайт заливали)) | |
|
|
|
|
|
|
|
для: sasha1133
(05.11.2009 в 04:28)
| | getimagesize() | |
|
|
|
|
|
|
|
для: sim5
(05.11.2009 в 09:52)
| | Она ж вроде бы размеры в пикселах возвращает. Объясните пожалуйста как пользоваться | |
|
|
|
|
|
|
|
для: sasha1133
(05.11.2009 в 16:50)
| | Функция getimagesize() определяет размер изображения GIF, JPG, PNG, SWF, PSD, TIFF или BMP и возвращает размеры, тип файла и высоту/ширину текстовой строки, используемой внутри нормального HTML-тэга IMG.
Возвращает массив из 4 элементов. Индекс 0 содержит ширину/width изображения в пикселах. Индекс 1 содержит высоту/height. Индекс 2 это флаг, указывающий тип изображения. 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(байтовый порядок intel), 8 = TIFF(байтовый порядок motorola), 9 = JPC, 10 = JP2, 11 = JPX. Индекс 3 это текстовая строка с корректной строкой height="yyy" width="xxx", которая может использоваться непосредственно в тэге IMG.
С изображениями JPG возвращаются два дополнительных индекса: channel и bits. channel имеет значение 3 для RGB-рисунков и 4 для CMYK-рисунков. bits это количество битов для каждого цвета.
Если доступ к файлу filename изображения невозможен или если это неправильное изображение, getimagesize() возвратит NULL и сгенерирует предупреждение.
Необязательный параметр imageinfo позволяет извлекать расширенную информацию из файла изображения. В настоящее время возвращается различные JPG APP-маркёры в ассоциативном массиве. Некоторые программы используют эти APP-маркёры для внедрения текстовой информации в изображения. Обычным является внедрение IPTC-информации http://www.iptc.org/ в маркёр APP13. Вы можете использовать функцию iptcparse() для разбора двоичного маркёра APP13 в нечто читабельное.
Поддержка TIFF была введена в PHP 4.2. Поддержка JPEG2000 была введена в PHP 4.3. Поддержка URL была введена в PHP 4.0.5.
Эта функция не требует библиотеки GD image. | |
|
|
|
|
|
|
|
для: sim5
(05.11.2009 в 17:05)
| | Спасибо за мего подробный ответ! | |
|
|
|
|
|
|
|
для: sasha1133
(05.11.2009 в 16:50)
| | >Она ж вроде бы размеры в пикселах возвращает.
не только.
>Объясните пожалуйста как пользоваться
как и любой другой. php.net/getimagesize | |
|
|
|
|
|
|
|
для: sasha1133
(05.11.2009 в 04:28)
| | exif_imagetype() работает быстрее, чем getimagesize() | |
|
|
|
|
|
|
|
для: Лена
(05.11.2009 в 10:19)
| | Если только на хосте будет включена его поддержка | |
|
|
|
|
|
|
|
для: sim5
(05.11.2009 в 10:23)
| | А почему ее могут отключить? Функция чем-то опасна? | |
|
|
|
|
|
|
|
для: Лена
(05.11.2009 в 10:49)
| | Ни чем она не опасна, но для ее работы требуется поддержка exif, а это может быть отключено на сервере. | |
|
|
|