L'image de pyramide

Fermé
maiFFF Messages postés 12 Date d'inscription lundi 1 avril 2013 Statut Membre Dernière intervention 6 janvier 2015 - 1 avril 2013 à 17:32
maiFFF Messages postés 12 Date d'inscription lundi 1 avril 2013 Statut Membre Dernière intervention 6 janvier 2015 - 1 avril 2013 à 21:57
salut
Je voudrais traiter une image avec java.
et savait comment travailler une image simple et noir
mais comment faire une image blanc à l'intérieur d'une image grise et limage grise à l'intérieur d'une image noir ?

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
1 avril 2013 à 18:50
"Je voudrais traiter une image avec java."
Tu as les BufferedImage qui permettent de manipuler les images comme un tableau de pixels. Tu peux ensuite utiliser ImageIO pour lire ou enregistrer un fichier avec ton BufferedImage.

BufferedImage img = ImageIO.read(fileInput);
...
ImagIO.write(img,"png",fileOutput);

"et savait comment travailler une image simple et noir
mais comment faire une image blanc à l'intérieur d'une image grise et limage grise à l'intérieur d'une image noir ?"

J'ai rien compris...
1
maiFFF Messages postés 12 Date d'inscription lundi 1 avril 2013 Statut Membre Dernière intervention 6 janvier 2015
1 avril 2013 à 19:10
merci
et Je veux faire une image comme celui-ci
http://im41.gulfup.com/GYCMU.jpg
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 1/04/2013 à 21:13
Voici les étapes générales : tu créés un BufferedImage à la taille que tu veux, en définissant le type d'image que tu veux (par exemple TYPE_INT_RGB)

int width = 400, height = 300;
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Ensuite tu parcours les cases de ton tableau pour définir les couleurs de chaque pixel.

for (int x=0; x<width; x++)
for (int y=0; y<height; y++)
{
    Color color = ...
    int rgb = ...
    img.setRGB(x,y,rgb);
}

Pour les couleurs, tu peux les obtenir de différentes manières.

Directement avec un nom de couleur prédéfini, il y en a 14, dont WHITE, LIGHT_GRAY, GRAY, DARK_GRAY, et BLACK qui devraient t'intéresser pour ton problème.

Color color = Color.RED;
int rgb = color.getRGB();

Suivant l'espace de couleurs Red Green Blue

int red, green, blue; // entiers entre 0 et 255
Color color = new Color(red, green, blue);
int rgb = color.getRGB();

Ou avec l'espace de couleurs Hue Saturation Brightness, qui pourrait aussi t'intéresser si tu veux faire un dégradé complet sur le contraste.

float hue, saturation, brightness; // réels entre 0 et 1
int rgb = Color.HSBtoRGB(hue, saturation, brightness);

Enfin, une fois que tes pixels sont tous remplis, tu les enregistre dans le format que tu veux.

ImageIO.write(img, "png", new File("C:/image.png"));
ImageIO.write(img, "jpg", new File("C:/image.jpg"));
...
0
maiFFF Messages postés 12 Date d'inscription lundi 1 avril 2013 Statut Membre Dernière intervention 6 janvier 2015
1 avril 2013 à 21:57
merci beaucoup pour votre aide :)
0