Скорость рисования Java относительно цветовой модели - PullRequest
1 голос
/ 27 марта 2010

У меня есть BufferedImage с IndexColorModel. Мне нужно нарисовать это изображение на экране, но я заметил, что это медленно при использовании IndexColorModel. Однако, если я запускаю BufferedImage с помощью аффинного преобразования идентификатора, он создает изображение с DirectColorModel, и рисование происходит значительно быстрее. Вот код, который я использую

AffineTransformOp identityOp = new AffineTransformOp(new AffineTransform(), AffineTransformOp.TYPE_BILINEAR);
displayImage = identityOp.filter(displayImage, null);

У меня три вопроса
1. Почему рисование медленнее в IndexColorModel?
2. Есть ли способ ускорить рисование IndexColorModel?
3. Если ответ на вопрос 2. «Нет», является ли это наиболее эффективным способом преобразования IndexColorModel в DirectColorModel? Я заметил, что это преобразование зависит от размера изображения, и я хотел бы удалить эту зависимость.

Спасибо за помощь

1 Ответ

1 голос
/ 27 марта 2010

Это слишком долго для комментария ...

Вы уверены, что создаваемый вами BufferedImage является лучшим в зависимости от используемой ОС? Вы должны всегда создавать «совместимый» BufferedImage. Самый быстрый, скажем, в Windows, может быть TYPE_INT_ARGB, но это не так в OS X и наоборот.

Примерно так (ой, закон Деметры болит;):

GraphicsEnvironment
        .getLocalGraphicsEnvironment()
        .getDefaultScreenDevice()
        .getDefaultConfiguration()
        .createCompatibleImage(width, height,Transparency.TRANSLUCENT)
...