2009-02-01 2 views
3

Я работаю над программой 2D 2D-рендеринга (работает на 1.6.0_11), которая использует внешние изображения для его отображения пользовательского интерфейса. Эти большие изображения содержат одновременно несколько графических элементов графического интерфейса, которые я извлекаю теперь с помощью BufferedImage.getSubimage(). При средней настольной системе (с или без включения DirectX/OpenGL ускорения), мои вопросы:Производительность getSubimage BufferedImage

  • getSubimage() представляет собой память эффективного вызова, поскольку он разделяет базовые данные изображения, но это влияет на отображение скорость этих вспомогательных изображений с помощью Graphics2D.drawImage()?
  • Если изображения используют режим цветовой палитры 8 бит на пиксель, каково было бы увеличение/уменьшение использования режима RGBA (например, 4-кратная память) или использование цветовой модели палитры (например, время преобразования)?
+0

Получается, это немного серая область. Если конвейер DirectX не используется, извлечение субимажей каждый раз занимает немного больше времени, чем наличие отдельного изображения этого изображения. Если изображение является плиткой, для которой требуется специальная система координат, разница заметно. Имея DirectX и современную графическую карту, BufferedImage становится управляемым изображением - живет в видеокамере и использует поддержку аппаратного обеспечения карт. В этом случае нет существенной разницы между суб и не-суб изображениями. – akarnokd

ответ

1

Насколько я знаю, getSubimage(...) не должен оказывать существенного влияния на рендеринг.

Преобразование данных изображения происходит медленно, и обычно лучше попытаться избежать этого на лету.


с изображениями медлительности можно разделить на две категории:

  • Disk I/O
  • обработки данных

и дискового ввода/вывода может легко быть самой медленной частью.

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

Мой опыт в том, что JAI лучше делать только то, что действительно необходимо, чем стандартная библиотека.

+0

Это не время ввода-вывода диска, потому что исходное изображение полностью загружено в память. Образец этого составного изображения можно увидеть по адресу http://karnokd.uw.hu/open-ig-starmap.png. Все графические компоненты пользовательского интерфейса извлекаются из таких изображений. – akarnokd

+0

Я принимаю этот ответ, потому что он четко заявляет - хотя и не подробно - то, что я тоже обнаружил с тех пор, предлагает альтернативный способ обработки изображений. Спасибо. – akarnokd

Смежные вопросы