Автор Тема: Проверка типа.  (Прочитано 5552 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sad Raven

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 103
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.sad-raven.ru
Проверка типа.
« : 27 Июня 2002, 08:57:30 »
Предположим, что через форму я получил файл my_photo.jpg.
Естесно, прежде чем его копировать из темпа, я проверяю какого типа этот файл:
if ($upload_photo_type == "image/jpeg"):
.........
endif;

Но вот тут встает другой вопрос:
Как узнать, что это действительно рисунок, а не, например, архив my_photo.rar, переименованый в my_photo.jpg?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Проверка типа.
« Ответ #1 : 27 Июня 2002, 10:46:22 »

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Проверка типа.
« Ответ #2 : 27 Июня 2002, 10:48:19 »
Проверить сигнатуру.
Вообще-то для этого есть отдельная функция exif_imagetype(), но она доступна, только если пакет был скомпилирован с ключом --enable-exif
Если тебе не повезло - то придется самостоятельно написать такую функцию.

Скажем, для формата JPEG первое слово в изображении - 0xFFD8
TANSTAAFL

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Проверка типа.
« Ответ #3 : 27 Июня 2002, 10:50:44 »
Кстати, чуть не забыл - getimagesize() тоже возвращает типизображения
TANSTAAFL

Оффлайн Sad Raven

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 103
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.sad-raven.ru
Проверка типа.
« Ответ #4 : 28 Июня 2002, 06:38:41 »
getimagesize() ? Хм...


$aaa 
getimagesize($upload_photo);
foreach (
$aaa as $value) echo "$value";

Выдает:
160 - это понятно
228 - это понятно
2 - а вот это непонятно
width="160" height="228" - это понятно
8 - и это непонятно
3 - это тоже непонятно

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
Проверка типа.
« Ответ #5 : 28 Июня 2002, 09:21:23 »
Returns an array with 4 elements. Index 0 contains the width of the image in pixels. Index 1 contains the height. Index 2 a flag indicating the type of the image. 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order, 9 = JPC, 10 = JP2, 11 = JPX. Index 3 is a text string with the correct height="yyy" width="xxx" string that can be used directly in an IMG tag.

RTFM, блин.
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн Sad Raven

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 103
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.sad-raven.ru
Проверка типа.
« Ответ #6 : 28 Июня 2002, 09:43:55 »
160                                     - это понятно, ширина
228                                     - это понятно, высота
2                                         - теперь понятно, JPG
width="160" height="228" - это понятно
8                                         - это осталось непонятно
3                                         - и это тоже непонятно

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Проверка типа.
« Ответ #7 : 28 Июня 2002, 10:43:36 »
Последние два неизвестных параметра появляются только в JPEG.
3 - это количество цветов.
А вот что такое 8 - я не знаю. Знаю, что это НЕ битрейт и не качество.
TANSTAAFL

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
Проверка типа.
« Ответ #8 : 28 Июня 2002, 10:52:49 »
Цитировать
3 - это количество цветов.

Ты уверен?
Обычно количество цветов в битах указывается. А для цветного жпега это всегда 24. Для grayscale jpega может быть, как 8 так и 16.

Также эти значения могут указывать цветовое пространство
(GRAYSCALE,RGB,YCbCr,CMYK,YCCK), сглаживание, тип кодирования, dithering\'а или чего-то еще. Вариантов много. Нужно искать в доках.
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
Проверка типа.
« Ответ #9 : 28 Июня 2002, 10:54:49 »
Блин, я слепой. :)

"With JPG images, two extras index are returned : channel and bits. channel will be 3 for RGB pictures, and 4 for CMYK pictures. bits is the number of bits for each color. "
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Проверка типа.
« Ответ #10 : 28 Июня 2002, 11:01:35 »
Вообще говоря, странно (я про bits for each color). Я сохранял JPEG и в 16M цветов и в 256 - это значение не меняется (потому я и не стал его расшифровывать - в цветах все сошлось, а вот с битрейтом - не шибко). Может, конечно, я что-то сделал криво...
TANSTAAFL

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
Проверка типа.
« Ответ #11 : 28 Июня 2002, 11:05:17 »
Jpeg не может хранить изображения в 256-цветах (только grayscale). Так что, сохраняй, хоть в 256, хоть в 16 цветов - все равно будет 16М. Стандарт, блин :)
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Проверка типа.
« Ответ #12 : 28 Июня 2002, 11:12:05 »
Мдя, значит это я стормозил... 8 бит для оттенков одного цвета - это и будет 256 цветов :))
TANSTAAFL

Оффлайн Metaller

  • Мелкое злобное существо
  • Ветеран
  • *****
  • Сообщений: 538
  • +0/-0
  • 2
    • Просмотр профиля
    • http://michael.pp.ru
Проверка типа.
« Ответ #13 : 28 Июня 2002, 11:13:43 »
Логично :):):)
Everybody\'s Got A Ticket To Ride Except For Me And My Lightning...

Оффлайн Sad Raven

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 103
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.sad-raven.ru
Проверка типа.
« Ответ #14 : 28 Июня 2002, 12:36:54 »
А что за такэ:

image/pjpeg

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28