Traitement d'images en Java : bibliothèques et exemples de code

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travail avec les images en Java : aperçu complet des bibliothèques et outils



Java offre des outils puissants pour travailler avec les images matricielles — du simple chargement et enregistrement au traitement complexe utilisant des filtres et des réseaux de neurones. Dans cet article, nous aborderons trois approches principales : la bibliothèque intégrée Java 2D, la bibliothèque spécialisée ImageJ et le standard industriel OpenCV. Vous apprendrez à choisir l'outil approprié et verrez des exemples de code fonctionnels.



1. Bibliothèque intégrée Java 2D (javax.imageio, java.awt)



Java 2D fait partie de la bibliothèque standard Java (JDK). Elle ne nécessite pas l'installation de dépendances supplémentaires et est idéale pour les opérations de base : chargement, redimensionnement, recadrage, superposition de texte et filtres simples.



Classes principales :

  • javax.imageio.ImageIO — lecture et écriture d'images (PNG, JPEG, BMP, GIF, WBMP).
  • java.awt.image.BufferedImage — représentation d'une image en mémoire avec accès aux pixels.
  • java.awt.Graphics2D — contexte de dessin (mise à l'échelle, rotation, superposition).
  • java.awt.image.BufferedImageOp — interface pour les filtres (flou, contraste, correction des couleurs).


Exemple 1 : Chargement, redimensionnement et enregistrement

import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;

public class ImageResizer { public static void main(String[] args) throws IOException { // Chargement de l'image source BufferedImage original = ImageIO.read(new File("input.jpg"));

// Nouvelles dimensions (par exemple, réduire à 300x200) int newWidth = 300; int newHeight = 200;

// Création d'une nouvelle image avec les dimensions souhaitées BufferedImage resized = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = resized.createGraphics();

// Dessin de l'image source avec mise à l'échelle g2d.drawImage(original, 0, 0, newWidth, newHeight, null); g2d.dispose();

// Enregistrement du résultat ImageIO.write(resized, "jpg", new File("output.jpg")); System.out.println("Terminé ! Taille modifiée."); }}


Exemple 2 : Application d'un filtre intégré (flou)

import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.awt.image.ConvolveOp;import java.awt.image.Kernel;import java.io.File;

public class BlurFilter { public static void main(String[] args) throws Exception { BufferedImage img = ImageIO.read(new File("input.jpg"));

// Noyau de flou 3x3 (box blur) float[] blurKernel = { 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f }; Kernel kernel = new Kernel(3, 3, blurKernel); ConvolveOp convolve = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); BufferedImage blurred = convolve.filter(img, null);

ImageIO.write(blurred, "jpg", new File("blurred.jpg")); }}


2. Bibliothèque ImageJ — pour les images scientifiques et médicales



ImageJ est un outil populaire de traitement d'images, initialement écrit en Java. Il fournit des centaines de plugins prêts à l'emploi, des macros et une API puissante. Idéal pour l'analyse de microscopie, d'images satellites et toute tâche nécessitant des statistiques sur les pixels.



Ajout de la dépendance (Maven) :

<dependency>    <groupId>net.imagej</groupId>    <artifactId>ij</artifactId>    <version>1.53t</version></dependency>


Exemple : Analyse d'histogramme et traitement par seuil

import ij.IJ;import ij.ImagePlus;import ij.                    

Recommendations