[Debutante][image]questions sur les images
Bonjour,
pour apprendre le Java je veux faire un mini jeu ( j'essaye :oops: )
je voudrais utiliser des images,
je compte donc faire une methode qui va me retourner un tableau d'image
( un bonome, un chien par exemple ) mais avant de retourner le tableau d'image, je voudrais les redimensionner.
donc la methode
Image [] getImage(maxwidth,MaxHeight)
ressemblera a ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public java.awt.Image[]getImage(int maxwidth,int MaxHeight)
{
java.awt.Toolkit tk=java.awt.Toolkit.getDefaultToolkit();
String []chemin={"c:\\1.jpg","c:\\2.jpg"};
java.awt.Image []MyImage=new java.awt.Image[2];
//1) chargement des images dans une "case" du tableau
for(int i=0;i<chemin.length;i++)
{
MyImage[i]=tk.getImage(chemin[i]);
}
//2) Redimensionnement des images en fonction des parametres
return MyImage;
} |
( code que j'ai fait en redigeant ce topic et en me basant sur la FAQ, donc il peut y avoir des erreurs :oops:, mais c'est juste pour le visuel, et avoir qqch de concret )
et la ou je blocke c'est a l'etape 2 ( "fusionner" le code precedent avec le suivant ->), dans la FAQ je vois ceci
( pour avoir tous les elements dans ce topic, je copi/colle integralement )
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
/** Effectue une homothétie de l'image.
*
* @param bi l'image.
* @param scaleValue la valeur de l'homothétie.
* @return une image réduite ou agrandie.
*
*/public static BufferedImage scale(BufferedImage bi, double scaleValue) {
AffineTransform tx = new AffineTransform();
tx.scale(scaleValue, scaleValue);
AffineTransformOp op = new AffineTransformOp(tx,
AffineTransformOp.TYPE_BILINEAR);
BufferedImage biNew = new BufferedImage( (int) (bi.getWidth() * scaleValue),
(int) (bi.getHeight() * scaleValue),
bi.getType());
return op.filter(bi, biNew);
} |
1)quel est la difference entre une BufferedImage et une Image ?
2)puis-je dessiner une BufferedImage directement sur mon JPanel ou dois-je la convertir en Image ?
3)si je peux ecrire directement une BufferedImage sur mon JPanel alors quel est la meilleur maniere de proceder ?
ensuite dans la FAQ j'ai aussi vue ça :
Citation:
Si vous ne faites pas de dispose() sur le contexte graphique et que vous rafraichissiez beaucoup celui-ci durant l'utilisation du programme, votre programme sera de plus en plus gourmant en mémoire.
4)la question que je me pose c'est a quel moment je dois faire un "dispose()"?
5)que se passe t'il quand je le fais ?
je me rend bien compte que ça fait beaucoup de question, desolée :oops:
merci a ceux qui auront le courage :wink: