Java de la conversion de l'Image de BufferedImage

Il est déjà question comme ça lien sur StackOverflow et l'on a accepté la réponse est "casting":

Image image = ImageIO.read(new File(file));
BufferedImage buffered = (BufferedImage) image;

Dans mon programme, j'ai essayer:

final float FACTOR  = 4f;
BufferedImage img = ImageIO.read(new File("graphic.png"));
int scaleX = (int) (img.getWidth() * FACTOR);
int scaleY = (int) (img.getHeight() * FACTOR);
Image image = img.getScaledInstance(scaleX, scaleY, Image.SCALE_SMOOTH);
BufferedImage buffered = (BufferedImage) image;

Malheureusement j'obtiens erreur d'exécution:

soleil.awt.image.ToolkitImage ne peut pas être lancé à java.awt.image.BufferedImage

Évidemment casting ne fonctionne pas.

La Question est: Quelle est (ou est-il), la bonne façon de convertir l'Image à BufferedImage?

  • si vous souhaitez mettre à l'échelle tampon d'image, essayez cette essayez cette [stackoverflow.com/questions/4216123/... [1]: stackoverflow.com/questions/4216123/...
  • Pour l'enregistrement, il n'est PAS le compilateur qui est en train de dire que. Vous êtes en train de voir une erreur d'exécution ... pas d'erreur de compilation.
  • Vous êtes de droite. Merci de souligner ce point. Je vais éditer la question en conséquence.
  • Même si elles ne sont pas répondre à ma question directement: ce sont de grandes solutions.
  • Une petite Chose pour l'OP: Méthode ImageIO.read(File) renvoie une BufferedImage par sa signature. (Référence) Il n'est pas nécessaire d'assigner d'abord à un Image variable en fonte de type BufferedImage. Qui pourrait prêter à confusion à la lecture de votre code.
  • J'ai pensé qu'il est tout à fait clair que la partie de code que vous mentionnez n'est pas mine de. Je l'ai écrit dans la question - ce qui est "accepté de répondre" à partir d'un question similaire sur DONC.
  • Pourquoi avez-vous tout d'abord créer un Image l'objet, puis de la convertir en une BufferedImage, lorsque vous avez la possibilité de créer un BufferedImage depuis le début?

InformationsquelleAutor Arek Wilk | 2012-11-28