Java: чтение коэффициента сжатия jpeg/gif

Я пытаюсь получить степень сжатия изображения JPEG и GIF в Java. Везде искал, но ничего не нашел. Можно ли прочитать степень сжатия файлов? Когда нет, как я мог вычислить это соотношение?


person minibi    schedule 07.02.2013    source источник
comment
Вы имеете в виду настройки качества? GIF не имеет настроек качества — это формат без потерь (если вам не нужно более 256 цветов). Jpeg на самом деле имеет несколько переменных, которые представляют собой компромисс между качеством и размером файла, хотя большинство графических редакторов скрывают их все за одним ползунком.   -  person Philipp    schedule 07.02.2013


Ответы (3)


Чтобы рассчитать сжатие изображения, вы сравниваете фактический размер файла с размером, который вы получили бы, если бы сохраняли изображение «сырым».

Например, файл jpeg с разрешением 1024x1024, истинным цветом (24bpp) размером 384 КБ, вы получите соотношение (384x1024) / (1024x1024x3) = 0,125, это означает, что jpeg создал файл, который составляет 12% необработанного изображения. Если вы инвертируете деление, вы можете сказать, что изображение было сжато в соотношении 8x или 1:8.

Получите информацию о размере и цвете изображения из заголовков или с помощью Image API, не нужно распаковывать файл для выполнения этого расчета.

person Sten Petrov    schedule 07.02.2013

Вы можете попробовать сравнить размер файла с количеством пикселей - это дает вам своего рода соотношение. Например:

//Image 1
Image Dimensions = 607x800px
Number of pixels = 486K
File size = 143KB
//Good quality

//Image 2
Image Dimension s= 1719x2377px
Number pixels= 4.086M
File size = 408KB
//Bad quality
person dstronczak    schedule 07.02.2013

Вы можете начать с Java Image-IO, прочитайте свое изображение и используйте соответствующие методы Класс ImageReader.

Вы можете скачать JAI здесь.

person JoshDM    schedule 07.02.2013