2010-03-26 5 views
1

J'ai une image tamponnée avec un IndexColorModel. J'ai besoin de peindre cette image sur l'écran, mais j'ai remarqué que c'est lent quand on utilise un IndexColorModel. Cependant, si j'exécute BufferedImage via une transformation affine d'identité, il crée une image avec un DirectColorModel et la peinture est significativement plus rapide. Voici le code que je utiliseVitesse de la peinture Java par rapport au modèle couleur

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

J'ai trois questions
1. Pourquoi la peinture de la plus lente sur un IndexColorModel?
2. Y a-t-il un moyen d'accélérer la peinture d'un IndexColorModel?
3. Si la réponse à 2. est non, est-ce le moyen le plus efficace de convertir d'un IndexColorModel à un DirectColorModel? J'ai remarqué que cette conversion dépend de la taille de l'image, et je voudrais supprimer cette dépendance.

Merci pour l'aide

+0

Comment vous créer le BufferedImage? –

+0

Je le crée via dcm4che en utilisant la version 1.4. C'est un projet très compliqué. Quelle information spécifique aimeriez-vous? – Jon

Répondre

1

Ceci est trop long pour un commentaire ...

Etes-vous sûr que le BufferedImage vous créez sont les meilleurs en fonction du système d'exploitation que vous êtes? Vous devez toujours créer un "compatible" BufferedImage. Le plus rapide sur, par exemple, Windows, peut être TYPE_INT_ARGB mais ce n'est pas vrai sur OS X et vice-versa.

Quelque chose comme ça (aïe, la loi de Déméter mal;):

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

Je ne peux pas contrôler le ColorModel initial. Je dois appeler une fonction qui me renvoie un IndexColorModel. J'appelle alors displayImage = new BufferedImage (cm, affichageImage.getRaster(), false, null) où cm est un IndexColorModel. Y a-t-il une meilleure façon d'intégrer ce IndexColorModel? – Jon

Questions connexes