Comment modifier un pixel dune image avec java
Fermé
ouegrame
-
25 mars 2021 à 02:46
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 25 mars 2021 à 19:00
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 25 mars 2021 à 19:00
A voir également:
- Java pixel
- Photo 600x600 pixel application dv lottery gratuit ✓ - Forum Graphisme
- Jeux java itel ✓ - Forum Jeux vidéo
- Java runtime - Télécharger - Langages
- Java apk - Télécharger - Langages
- Scanf en java ✓ - Forum Java
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
25 mars 2021 à 08:44
25 mars 2021 à 08:44
Bonjour,
Tout d'abord puisque tu parles de fichier il faut distinguer les différents formats qui existent.
Il y a des formats compressés d'images (JPG etc.) et des formats sans pertes (PNG etc.)
Prenons par exemple une image totalement noire, si tu modifies un seul pixel en blanc et que tu l'enregistres au format JPG, il n'y a aucune garantie ni que le pixel modifié soit exactement blanc, ni que les pixels noirs autour soient encore exactement noir, car la compression de l'image lors de l'enregistrement du fichier peut entraîner des modifications sur tous les pixels.
Considérons donc plutôt un format PNG, sans perte, où tu es sûr que le pixel modifié sera bien modifié comme tu le veux, et que les pixels non modifiés resteront inchangés.
Remarque : si tu as l'intention de modifier plusieurs pixels de suite, il est inutile d'ouvrir et fermer le fichier à chaque fois. Il vaut mieux ouvrir une fois le fichier au début, tout modifier et d'enregistrer le fichier à la fin.
Tout d'abord puisque tu parles de fichier il faut distinguer les différents formats qui existent.
Il y a des formats compressés d'images (JPG etc.) et des formats sans pertes (PNG etc.)
Prenons par exemple une image totalement noire, si tu modifies un seul pixel en blanc et que tu l'enregistres au format JPG, il n'y a aucune garantie ni que le pixel modifié soit exactement blanc, ni que les pixels noirs autour soient encore exactement noir, car la compression de l'image lors de l'enregistrement du fichier peut entraîner des modifications sur tous les pixels.
Considérons donc plutôt un format PNG, sans perte, où tu es sûr que le pixel modifié sera bien modifié comme tu le veux, et que les pixels non modifiés resteront inchangés.
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class TestImage {
public static void setColor(File file, int x, int y, Color color) throws IOException {
BufferedImage img = ImageIO.read(file); // lecture de l'image
img.setRGB(x, y, color.getRGB()); // modification du pixel
ImageIO.write(img, "PNG", file); // enregistrement de l'image
}
public static void main(String[] args) throws IOException {
File file = new File("E:/img.png");
setColor(file, 10, 20, Color.RED);
}
}
Remarque : si tu as l'intention de modifier plusieurs pixels de suite, il est inutile d'ouvrir et fermer le fichier à chaque fois. Il vaut mieux ouvrir une fois le fichier au début, tout modifier et d'enregistrer le fichier à la fin.
25 mars 2021 à 18:17
setColor(file, 10, 20, Color.RED);
on peux spécifier des couleur plus complexe
25 mars 2021 à 18:20
25 mars 2021 à 19:00
Voir la documentation :
https://docs.oracle.com/en/java/javase/16/docs/api/java.desktop/java/awt/Color.html