Image vs BufferedImage
Chaque fois que de traiter avec le chargement et le rendu des images en Java, auparavant, j'ai toujours utilisé BufferedImage
s de stocker et de manipuler les images dans la mémoire.
Cependant, j'ai récemment rencontré un quelques différentes sites qui utilisent le Image
classe au lieu de BufferedImage
et cela m'a demande - quelles sont les différences?
Je suis conscient qu'un BufferedImage
a un plus grand/optimisée des outils, mais ne viennent à tout prix? Si oui, quand est-ce que les coûts deviennent perceptibles? Dans quelles situations utiliser une Image
sur une BufferedImage
, ou vice-versa?
OriginalL'auteur Jamie | 2012-08-04
Vous devez vous connecter pour publier un commentaire.
BufferedImage extends Image
.Image
est juste une base de classe abstraite et vous ne pouvez pas l'instancier. Sous le capot, vous utilisezBufferedImage
ou d'une autre mise en œuvre pour en assurer."Under the hood you are using BufferedImage for sure"
: pas nécessairement. Il y a d'autres des implémentations concrètes de l'Image qui sont souvent utilisés en Java, et on ne peut pas supposer que lorsque l'on traite avec une Image concrète exemple que c'est en fait une BufferedImage.Oui vrai, mais dans le
JavaDoc
je vois leVolatileImage
que la seule autre de la mise en œuvre. J'ai édité ma réponse pour être plus précis, si.Petar: Il y en a d'autres, certains qui ne sont pas bien documentés. Je le sais parce que j'ai couru dans cette situation lors de l'obtention d'images à partir de filtres de manipulation d'Image. Tout ce que je dis, c'est que vous ne pouvez pas faire cette supposition. + 1 pour votre montage.
Oui, vous avez raison, j'ai édité ma réponse pour être plus précis.
OriginalL'auteur Petar Minchev
Il ne devrait pas y avoir de réelle différence de performance entre directement à la création d'un BufferedImage et une Trousse d'outils de l'image (java.awt.Trousse d'outils ou de l'Image#getScaledInstance). Vous n'aurez jamais une instance réelle de l'Image parce que c'est une classe abstraite; seulement, vous serez face à ses sous-classes (par exemple, BufferedImage).
OriginalL'auteur edwga