Я пытаюсь получить степень сжатия изображения JPEG и GIF в Java. Везде искал, но ничего не нашел. Можно ли прочитать степень сжатия файлов? Когда нет, как я мог вычислить это соотношение?
Java: чтение коэффициента сжатия jpeg/gif
Ответы (3)
Чтобы рассчитать сжатие изображения, вы сравниваете фактический размер файла с размером, который вы получили бы, если бы сохраняли изображение «сырым».
Например, файл jpeg с разрешением 1024x1024, истинным цветом (24bpp) размером 384 КБ, вы получите соотношение (384x1024) / (1024x1024x3) = 0,125, это означает, что jpeg создал файл, который составляет 12% необработанного изображения. Если вы инвертируете деление, вы можете сказать, что изображение было сжато в соотношении 8x или 1:8.
Получите информацию о размере и цвете изображения из заголовков или с помощью Image API, не нужно распаковывать файл для выполнения этого расчета.
Вы можете попробовать сравнить размер файла с количеством пикселей - это дает вам своего рода соотношение. Например:
//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
Вы можете начать с Java Image-IO, прочитайте свое изображение и используйте соответствующие методы Класс ImageReader.
Вы можете скачать JAI здесь.