сколько байтов мне нужно, чтобы прочитать изображение, чтобы я мог получить его метаданные измерений в PHP - PullRequest
2 голосов
/ 15 ноября 2011

В отношении этого вопроса: Сверхбыстрый getimagesize в php

Мне интересно использовать этот принятый код ответа при получении размера изображения из его метаданных, прочитав всего несколькобайт без загрузки всего изображения

Какой абсолютный минимум байтов должен быть загружен настолько, чтобы я мог получить метаданные изображения?

Я могу представить, что оно будет различным в разных изображенияхи типы файлов, но есть ли какая-то формула или руководство, чтобы определить это?Возможно, процентное соотношение относительно размера файла изображения?

1 Ответ

1 голос
/ 15 ноября 2011

Изображения могут иметь произвольную длину метаданных, встроенных в них, особенно в форматах JPEG и PNG, где вы даже можете хранить полноцветные профили, изображения предварительного просмотра и еще много чего внутри метаданных изображения.

Изображения могут содержать даже больше метаданных, чем фактические данные изображения.

Таким образом, невозможно определить произвольное число, которое всегда будет работать.

Теперь, если вас интересуют только размеры изображения, вы обычно можете прочитать менее 50 байт файла.

  • PNG хранит ширину и высоту в байтах 16-19 (ширина) и 20-23 (высота).
  • Другие форматы делают подобные вещи.

Поскольку ни одна универсальная библиотека изображений, вероятно, не захочет обрабатывать только 50-100 байт данных изображения, вам придется писать собственные парсеры и, таким образом, проверять ссылки в любом случае.

...