Имам java програма, която чете jpeg файл от твърдия диск и го използва като фоново изображение за различни други неща. Самото изображение се съхранява в BufferImage
обект така:
BufferedImage background
background = ImageIO.read(file)
Това работи чудесно - проблемът е, че самият обект BufferedImage
е огромен. Например, 215k jpeg файл става BufferedImag
e обект, който е 4 мегабайта и се променя. Въпросното приложение може да има заредени някои доста големи фонови изображения, но докато jpeg файловете никога не са повече от мегабайт или два, паметта, използвана за съхраняване на BufferedImage
, може бързо да надхвърли 100 мегабайта.
Предполагам, че всичко това е така, защото изображението се съхранява в ram като необработени RGB данни, не е компресирано или оптимизирано по никакъв начин.
Има ли начин да съхранява изображението в ram в по-малък формат? Намирам се в ситуация, в която имам повече хлабина от страна на процесора, отколкото от RAM, така че лек удар в производителността, за да върна размера на обекта на изображението обратно към jpeg компресията, би си заслужавал.