cs_lebienestrare
Messages postés96Date d'inscriptionsamedi 6 mai 2006StatutMembreDernière intervention23 mars 2008
-
9 mars 2008 à 03:28
cs_lebienestrare
Messages postés96Date d'inscriptionsamedi 6 mai 2006StatutMembreDernière intervention23 mars 2008
-
14 mars 2008 à 17:36
Bonjour tout le monde,
j'ai réussi à importer mes images dans une applet, mais je me demande comment est ce qu'on peut faire une sorte de duplication des images, ça veut en faire plusieurs dans l'applet
merci, ps: j'ai implémenté l'image directement dans l'applet sans utilisation de classes.
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 9 mars 2008 à 07:50
Si tu veus afficher la même image plusieurs fois, alors il ne faut pas nécessairement la copier. Si tu veus vraiment copier l'image, alors tu peus créer d'abord un nouveau BufferedImage. Ensuite tu peus dessiner l'original dessus en utilisant Graphics.drawImage(). Exemple:
private Image copyImage(Image img) {
int w = img.getWidth(null);
int h = img.getHeight(null);
BufferedImage imgCopy = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = imgCopy.createGraphics();
g2.drawImage(img, 0, 0, w, h, null);
g2.dispose();
return imgCopy;
}
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 9 mars 2008 à 12:01
Salut:
uhrand >> Il faut déterminer si l'image contient un channel Alpha pour utiliser la constante TYPE_INT_ARGB, sinon il faut utiliser la constante TYPE_INT_RGB.
Ceci assure qu'on obtient une copie conforme de l'image d'origine.
Petite modification de code précédant:
public static boolean hasAlpha(Image image) {
if (image instanceof BufferedImage) {
BufferedImage bimage = (BufferedImage)image;
return bimage.getColorModel().hasAlpha();
}
cs_lebienestrare
Messages postés96Date d'inscriptionsamedi 6 mai 2006StatutMembreDernière intervention23 mars 2008 9 mars 2008 à 17:54
bonjour,
merci beaucoup pour vos réponses, en fait j'ai fait la méthode que vous m'avez dite, mais malheureusement rien ne s'affiche , j'appelle cette fct dans init() de l'applet
merci bcp
Vous n’avez pas trouvé la réponse que vous recherchez ?
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 10 mars 2008 à 23:59
> Il faut déterminer si l'image contient un channel Alpha
pour utiliser la constante TYPE_INT_ARGB, sinon il > faut utiliser la
constante TYPE_INT_RGB.
Oui, j'ai peut-être un peu trop simplifié. En cas de BufferedImage on peut le faire aussi comme ceci:int type (img.getTransparency() Transparency.OPAQUE) ?
BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 13 mars 2008 à 20:05
Salut:
Utilises cette méthode:
public static Image copyImage(Image image) {
if (image == null) {
return null;
}
if (image instanceof BufferedImage) {
int w = ((BufferedImage)image).getWidth();
int h = ((BufferedImage)image).getHeight();
return ((BufferedImage)image).getSubimage(0, 0, w, h);
}
if (image instanceof Image) {
int w = image.getWidth(null);
int h = image.getHeight(null);
return Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(image.getSource(), new CropImageFilter(0, 0, w, h))
);
}
return null;
}
J'ai testé cette méthode avant de la poster elle marche bien.
Note: Quand tu passe en paramètre un BufferedImage n'oublies pas de faire un casting:
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 13 mars 2008 à 20:05
Salut:
Utilises cette méthode:
public static Image copyImage(Image image) {
if (image == null) {
return null;
}
if (image instanceof BufferedImage) {
int w = ((BufferedImage)image).getWidth();
int h = ((BufferedImage)image).getHeight();
return ((BufferedImage)image).getSubimage(0, 0, w, h);
}
if (image instanceof Image) {
int w = image.getWidth(null);
int h = image.getHeight(null);
return Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(image.getSource(), new CropImageFilter(0, 0, w, h))
);
}
return null;
}
J'ai testé cette méthode avant de la poster elle marche bien.
Note: Quand tu passe en paramètre un BufferedImage n'oublies pas de faire un casting:
cs_lebienestrare
Messages postés96Date d'inscriptionsamedi 6 mai 2006StatutMembreDernière intervention23 mars 2008 14 mars 2008 à 17:36
salut, merci pour votre aide,
Ombitios, ta méthode n'a pas marché pr moi, pt etre c dû a une erreur d'implémentation que je fais...
en tt cas, j'ai atteint mon but, et j'ai réalisé ce que je voulais râce a des classes,
merci encore, bonne journée