---
title: 'Bildfilter mit AWT-ImageFilter'
url: 'https://tutego.de/blog/javainsel/2013/09/bildfilter-mit-awt-imagefilter'
markdown: 'https://tutego.de/blog/javainsel/2013/09/bildfilter-mit-awt-imagefilter.md'
date: '2013-09-03'
description: 'ImageFilter liegen zwischen Produzenten und Konsumenten und verändern Bildinformationen oder nehmen Einfluss auf die Größe. Für Bild-Produzenten treten die Filter als Konsumenten auf, die die Schnittstelle ImageConsumer implementieren und die wichtige Methode setPixel() programmieren. Grundlegende …'
taxonomy:
  category:
    - Allgemein
---

# Bildfilter mit AWT-ImageFilter

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Bildfilter mit AWT-ImageFilter

03.09.2013 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

ImageFilter liegen zwischen Produzenten und Konsumenten und verändern Bildinformationen oder nehmen Einfluss auf die Größe. Für Bild-Produzenten treten die Filter als Konsumenten auf, die die Schnittstelle ImageConsumer implementieren und die wichtige Methode `setPixel()` programmieren.

#### Grundlegende Eigenschaft von Filtern

Um einen Filter anzuwenden, nutzen wir die Klasse FilteredImageSource. Im Konstruktor geben wir das Bild und den Filter an. Anschließend können wir den zurückgegebenen Produzenten an `createImage()` übergeben, und wir haben ein neues Bild.

**Beispiel:** Anwendung eines Filters:

```java
Image src = getImage( "gatesInAlbuquerque.jpg" );
ImageFilter colorfilter = new GrayFilter();
ImageProducer imageprod = new FilteredImageSource( src.getSource(), colorfilter );
Image img = createImage( imageprod );
```

#### Konkrete Filterklassen

Es gibt einige Unterklassen der Klasse ImageFilter, die für unsere Arbeit interessant sind:

8. BufferedImageFilter. Diesem Filter lässt sich ein Objekt vom Typ BufferedImageOp übergeben, mit dem unterschiedliche Manipulationen ermöglicht werden. BufferedImageOp ist eine Schnittstelle, die von AffineTransformOp, ConvolveOp, BandCombineOp und LookupOp implementiert wird. AffineTransformOp ist am attraktivsten, da es mit einem AffineTransform konstruiert wird, sodass leicht Vergrößerungen oder Rotationen ermöglicht werden. Über AffineTransform-Objekte erfahren wir im 2D-Abschnitt mehr.
9. CropImageFilter. Bildteile werden herausgeschnitten.
10. ReplicateScaleFilter. Zum Vergrößern oder Verkleinern von Bildern. Ein einfacher Algorithmus wird angewendet. Eine weiche Vergrößerung oder Verkleinerung lässt sich mit der Unterklasse AreaAveragingScaleFilter erreichen.
11. RGBImageFilter. Dieser allgemeine Filter ist für die eigene Filterklasse gedacht. Wir müssen lediglich eine `filterRGB()`-Methode angeben, die die RGB-Bildinformationen für jeden Punkt (x,y) modifiziert. Benötigt der Filter auch die Nachbarpunkte, können wir nicht mit RGBImageFilter arbeiten. **Beispiel:** Ein Filter, der den Rot- und Blauanteil in einem Bild vertauscht.

```

class RedBlueSwapFilter extends RGBImageFilter
{
 public RedBlueSwapFilter()
 {
  canFilterIndexColorModel = true;
 }
 public int filterRGB( int x, int y, int rgb )
  {
    return (   (rgb & 0xff00ff00)
            | ((rgb & 0xff0000) >> 16)
            | ((rgb & 0xff)
```

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Ausgaben mit MessageFormat formatieren](https://tutego.de/blog/javainsel/2013/09/ausgaben-mit-messageformat-formatieren.md)
- Next: [Schnelle Vergleiche mit CollatorKeys](https://tutego.de/blog/javainsel/2013/09/schnelle-vergleiche-mit-collatorkeys.md)
