Вычислить высоту изображения, используя размер и ширину файла

Я не очень надеюсь, что это вообще возможно, потому что JPG — это формат сжатия с потерями, но я все равно спрошу.

У меня есть неполные метаданные об изображении, и мне нужно определить размеры без загрузки файла в память или с помощью инструментов командной строки, таких как imagemagick.

Вот что я знаю:

  • формат файла — JPG (JPG — это 8-битный формат изображения).
  • общий размер файла составляет 96284 байта.
  • ширина изображения 600 пикселей.

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


person JamesWilson    schedule 08.04.2020    source источник
comment
Как говорит Ив, вам не нужно загружать весь файл, чтобы получить размеры, и вам не нужно добавлять какие-либо массивные зависимости, такие как ImageMagick, вы можете довольно легко разобрать размеры, если это все, что вам нужно. Могу я спросить, что возражает против его загрузки? А какой язык вы используете?   -  person Mark Setchell    schedule 09.04.2020
comment
В этом случае я не могу загрузить изображение вообще, потому что файл размещен на удаленном сервере. Я использую API — в данном случае Solr — через приложение Javascript React/Next.js. API имеет неполные метаданные (как уже упоминалось), и я хочу добавить размеры высоты и ширины к тегу <img> в рендеринге на стороне сервера, чтобы при загрузке изображения на стороне клиента браузер резервировал правильное количество места на основе соотношение сторон до того, как изображение завершит загрузку. Теперь мне ясно, что API необходимо обновить, чтобы включить вычисления высоты и ширины. Спасибо вам обоим.   -  person JamesWilson    schedule 09.04.2020


Ответы (1)


Нет, нет никакой связи между количеством пикселей и сжатым размером.

Вы можете попытать счастья, проанализировав заголовок файла, чтобы получить теги ширины/высоты. Библиотека, такая как jpeglib, позволяет вам читать только заголовок, но для ее интеграции требуются некоторые усилия.

person Yves Daoust    schedule 09.04.2020