Bildverarbeitung in Java: Bibliotheken und Codebeispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Bildern in Java: vollständiger Überblick über Bibliotheken und Werkzeuge



Java bietet leistungsstarke Mittel zur Arbeit mit Rasterbildern – vom einfachen Laden und Speichern bis hin zur komplexen Verarbeitung mit Filtern und neuronalen Netzen. In diesem Artikel betrachten wir drei grundlegende Ansätze: die integrierte Bibliothek Java 2D, die spezialisierte ImageJ und den Industriestandard OpenCV. Sie erfahren, wie Sie das passende Werkzeug auswählen und sehen funktionierende Codebeispiele.



1. Integrierte Bibliothek Java 2D (javax.imageio, java.awt)



Java 2D ist Teil der Standardbibliothek von Java (JDK). Sie erfordert keine Installation zusätzlicher Abhängigkeiten und ist ideal für grundlegende Operationen: Laden, Größenänderung, Zuschneiden, Textüberlagerung und einfache Filter.



Wichtige Klassen:

  • javax.imageio.ImageIO – Lesen und Schreiben von Bildern (PNG, JPEG, BMP, GIF, WBMP).
  • java.awt.image.BufferedImage – Darstellung eines Bildes im Speicher mit Pixelzugriff.
  • java.awt.Graphics2D – Kontext zum Zeichnen (Skalierung, Drehung, Überlagerung).
  • java.awt.image.BufferedImageOp – Schnittstelle für Filter (Weichzeichnung, Kontrast, Farbkorrektur).


Beispiel 1: Laden, Größe ändern und speichern

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 { // Ursprüngliches Bild laden BufferedImage original = ImageIO.read(new File("input.jpg"));

// Neue Abmessungen (z.B. auf 300x200 verkleinern) int newWidth = 300; int newHeight = 200;

// Neues Bild mit den gewünschten Abmessungen erstellen BufferedImage resized = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = resized.createGraphics();

// Ursprüngliches Bild mit Skalierung zeichnen g2d.drawImage(original, 0, 0, newWidth, newHeight, null); g2d.dispose();

// Ergebnis speichern ImageIO.write(resized, "jpg", new File("output.jpg")); System.out.println("Fertig! Größe geändert."); }}


Beispiel 2: Anwendung eines integrierten Filters (Weichzeichnung)

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"));

// 3x3 Weichzeichnungs-Kernel (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. Bibliothek ImageJ – für wissenschaftliche und medizinische Bilder



ImageJ ist ein beliebtes Werkzeug zur Bildverarbeitung, das ursprünglich in Java geschrieben wurde. Es bietet hunderte vorgefertigter Plugins, Makros und eine leistungsstarke API. Es eignet sich hervorragend für die Analyse von Mikroskopie, Satellitenbildern und allen Aufgaben, bei denen Pixelstatistiken benötigt werden.



Einbindung (Maven):

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


Beispiel: Histogrammanalyse und Schwellwertverarbeitung

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

Empfehlungen