Максимальный размер файла JPEG с известными размерами
Я собираюсь позволить пользователям загружать изображения 300x300, сжатые с помощью JPEG. Есть ли способ определить, какой максимальный размер файла такого изображения будет?
Я могу себе представить, что это можно попробовать, сжав случайный шум со 100 качеством, но есть ли теоретический максимум?
Скажите, что изображение представляет собой абсолютно несжатый случайный шум, может ли он быть 3 байта на пиксель (24-битный цвет) и запас для метаданных? Или может ли такое изображение оказаться более крупным, чем оригинал при сжатии?
Ответы
Ответ 1
Из Википедии:
Для изображений с высоким качеством (Q = 100) требуется примерно 8,25 бит на цветной пиксель http://en.wikipedia.org/wiki/JPEG#Sample_photographs
Итак, для Q=100
на изображении 300x300
это приведет к (300 * 300) px * 8.25 bits/px = 741,500 bits = ~ 91 kB
Существуют также режимы кодирования без потерь JPEG
, которые практически не используются (последнее предложение, второй абзац). Но у них будет типичный RGB 24 bits/pixel
.
Ответ 2
Нет ограничений на размер метаданных jpeg, что означает отсутствие ограничений на размер файла jpeg. См. Этот ответ, который я связал для объяснения причин, а также для примера реалистичной ситуации, когда метаданные могут стать большими: Каков максимальный размер метаданных JPEG?
Итак, если предположить, что максимальный практический/реалистичный размер соответствует вашей цели, тогда вы должны учитывать этот пример в своих расчетах. Во многих контекстах было бы хорошо просто отклонить вещи за пределами этого максимума, как за пределами области использования вашей программы.
Но если вы абсолютно должны полагаться на теоретические, то, к сожалению, это большой жирный ∞
Примечание. У меня нет большого опыта работы с спецификацией jpeg, поэтому я собираюсь отказаться от того, что люди говорили о повторяющихся полях, а также о нескольких полях комментариев. Пожалуйста, поправьте меня, если найдете доказательства обратного.