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

у меня была проблема с медленным, когда я пытался нарисовать изображение с масштабом: 1280 * 768, и это формат PNG, и его размер составляет почти 3,26 МБ, но когда я преобразовал его в JPEG, его размер был 226 КБ,! и проблема с замедлением исчезла!! ,

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


person Jason4Ever    schedule 15.12.2011    source источник
comment
Никто не рисует PNG или JPEG (это только сериализованные форматы для изображения). Тем не менее, изображение может загружаться немного по-другому (или с разной скоростью: я ожидаю, что гораздо больший PNG будет загружаться дольше, чем гораздо меньший JPG, но фактическая скорость прорисовки изображения должна быть такой же, за исключением некоторых других внутренних развлечений) как буфер в формате, не поддерживающем blt'able). Есть пример теста для медленных и немедленных сценариев?   -  person    schedule 16.12.2011
comment
Если вы имеете в виду, что вы уменьшили размеры изображения при преобразовании его в JPEG, также аннотируйте это.   -  person    schedule 16.12.2011


Ответы (1)


Когда вы сжимаете изображение до формата JPEG, вы теряете часть данных изображения, в результате чего файл становится короче.

Чтение более короткого файла занимает меньше времени. И 3.26 MB > 226 KB!

Вы можете не увидеть разницы на своем экране, потому что исходный файл настолько велик, что может быть показан не каждый пиксель, но при преобразовании в JPEG происходит потеря качества.

Посетите этот сайт о форматах файлов изображений: GIF, PNG, или JPEG?

РЕДАКТИРОВАТЬ Вы также можете посмотреть рисунок на этом веб-сайте: http://www.kitfox.com/javaOne2007/javaOne-notes.pdf

Вы можете быстро визуализировать изображения, используя java.awt.RenderingHints. . Использование этого с BufferedImageOp может ускорить загрузку ваших изображений (хотя и за счет некоторого снижения качества).

Надеюсь, это помогло!

person eboix    schedule 15.12.2011
comment
Для меня верно то, что PNG — это формат изображения без потерь, тогда как JPG — формат изображения с потерями. Следовательно, загрузка файла PNG немного медленнее по сравнению с файлом JPG в его первом экземпляре из-за его размера (для того же разрешения изображения 821x672 требуется около 1040 КБ для PNG и всего 396 КБ для JPG; большая разница здесь ). Это будет намного медленнее, если файл PNG имеет альфа-канал. Существует несколько методов ускорения загрузки изображения, таких как нарезка изображения и субдискретизация изображения файла изображения в BufferedImage или другой буфер данных изображения. - person ee.; 16.12.2011
comment
да, я знаю, что качество изображения в формате jpeg будет хуже, чем качество изображения в формате png, и в то же время мне нужно изображение высокого качества! Так есть ли способ ускорить рисование изображений png с помощью java? или есть ли способы уменьшить размер изображений png без потери качества? - person Jason4Ever; 16.12.2011