10
votes

Redimensionnement de l'image Java GetScaledinstance

Voici mon code "

ImageIcon ii=new ImageIcon("/Users/tushar_chutani/Desktop/apple.jpg");  

Image image= ii.getImage().getScaledInstance(50, 50, Image.SCALE_SMOOTH);


5 commentaires

Quelles erreurs obtenez-vous? Pouvez-vous réellement afficher l'imageIcon originale? Comment savez-vous n'est pas à l'échelle. Basé sur les deux lignes de code que vous avez posté, vous ne faites rien avec l'image. Publiez votre SSCCE qui démontre le problème.


L'image ne montre pas ... L'image passe au blanc ...


Ensuite, cela n'a probablement pas lu l'image. Vous n'avez pas posté de SSCCE, il n'y a donc pas grand chose que nous puissions faire pour vous.


travaille-t-il avec une autre image? Certains problèmes ont été signalés ici avec certains JPEG en raison de leur modèle de couleur.


Cela ne fonctionne pas avec d'autres fichiers non plus


3 Réponses :


17
votes

Le problème est que image.getscaledinstance () ne renvoie pas Terminé, image échelle. Cela laisse une grande partie du travail de mise à l'échelle plus tard temps lorsque les pixels d'image sont utilisés.

Par exemple, si vous utilisez l'image à l'échelle dans un graphique2d.drawimage () Appelez alors la méthode renverra Faux et continuera de dessiner de manière asynchrone. Vous devez ensuite utiliser le imageObserver paramètre dans le graphiques2d.drawimage () Appelez pour attendre l'achèvement de la mise à l'échelle et du dessin.

L'exemple suivant montre comment balancer des images plus simplement Sans imageObserver . La mise à l'échelle est faite en dessinant l'icône dans un bufferedimage à la place. xxx


0 commentaires

6
votes

Vous pouvez envelopper à nouveau l'image dans une icône d'image. Une icône d'image charge généralement l'image dans son constructeur et utilise son propre traqueur multimédia à cette fin. J'utilise le code suivant maintenant: xxx

Vous pouvez travailler directement avec la nouvelle icône ou appeler getImage () pour travailler avec la nouvelle image. Le code ci-dessus fait également un rapport d'aspect préservant la mise à l'échelle donnée sur une nouvelle paire nouvelle et ancienne.

bye


1 commentaires

La réponse acceptée fonctionne bien, mais je pense que cette réponse est beaucoup plus facile à comprendre, merci pour la perspicacité!



1
votes

Votre code: xxx

ajoutez celui-ci: xxx

Si vous souhaitez afficher: Ajoutez ceci .. xxx


0 commentaires