Comment faire pour obtenir l'échelle de l'instance d'une bufferedImage
Je voulais passer à l'échelle instance d'un tampon d'image et j'ai fait:
public void analyzePosition(BufferedImage img, int x, int y){
img = (BufferedImage) img.getScaledInstance(getWidth(), getHeight(), Image.SCALE_SMOOTH);
....
}
mais je fais une exception:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage
at ImagePanel.analyzePosition(ImagePanel.java:43)
Je voulais puis à jeter à ToolkitImage
ensuite utiliser la méthode getBufferedImage
j'ai lu dans d'autres articles. Le problème est qu'il n'ya pas de classe comme sun.awt.image.ToolkitImage
je ne peut pas lancer parce que Eclipse ne les vois même pas cette classe. J'utilise Java 1.7
et jre1.7
.
OriginalL'auteur Yoda | 2013-10-22
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer une nouvelle image, une BufferedImage avec le TookitImage.
OriginalL'auteur Hovercraft Full Of Eels
BufferedImage#getScaledInstance
est en fait hérité dejava.awt.Image
et ne garantit qu'il sera de retour uneImage
donc je dirais que c'est pas une bonne idée de l'essayer et d'en assumer le rendement sous-jacent de type dans ce cas.getScaledInstance
est, également, n'est normalement pas le plus rapide ou le meilleur de la qualité de la méthodeÀ l'échelle d'un
BufferedImage
lui-même, vous avez un certain nombre d'options différentes, mais plus simplement de prendre l'original et de le repeindre d'une autre image, en appliquant une sorte de mise à l'échelle dans le processus.Par exemple:
Pour plus de détails sur
getScaledInstance
, avoir une lecture de Les Dangers de l'Image.getScaledInstance()OriginalL'auteur MadProgrammer