# Verwendung von JAI und das Splitten von Bildern



## PHANTOMIAS (3. Feb 2010)

Hallo an alle!

Ich will gerne ein tif-Bild einlesen und muss dafür JAI verwenden.
Die kann ich auch dann mittels JAI.create in ein PlanarImage"setzen".

Nun habe ich jedoch folgendes Problem: Ich will das Bild in Quadrate (10 in x-Richtung, 10 in y-Richtung) aufteilen und diese einzeln aus Performancegründen behandeln (RGB-Werte auslesen und mehrfach diese "manipulieren").

Wie kann man das am Geschicktesten machen? Ich haabe etwas von TiledImages gelesen, jedoch kann ich es nicht anwenden.
So kann ich wohl ein PlanarImage in ein TiledImage "aufnehmen":

```
TiledImage myTiledImage = new TiledImage(myPlanarImage, 16, 16);
```
Habe ich dann myTiledImage mit 16x16 Blöcke, in meinem Fall dann 10* 16x16 Blöche in x- und y-Richtung? Wie greife ich aber dann auf die zu, dass ich die RGB-Werte kriege und ändern kann?

Jemand eine Idee? Danke + Gruß.


----------



## ice-breaker (3. Feb 2010)

Zu welchem Zweck soll das denn sein? Und was wird dadurch schneller.


----------



## PHANTOMIAS (3. Feb 2010)

Was zu welchem Zweck? Das was ich machen will?
Das ist ein Programm, dass ein Bild erhält und versucht dieses farblich nach bestimmten Muster zu filtern.

Es ist einfach zu handlen für mich wenn es in Abschnitte geteilt ist, zumal dann nicht so viele Daten im Speicher vorgehalten werden müssen, denn 16*16 Pixel ist eine andere Zahl also 160*160 Pixel.

Gruß PHANTOMIAS


----------



## ice-breaker (3. Feb 2010)

Ich wollte nur sagen, dass es keine Performance bringt, wenn du das Ding erst zerschnippselst und dann jeden Teil einzeln behandelst.
Effektiver wäre es mit Threads parallel an dem "großen" Bild zu arbeiten.
ungefähr so:

```
public void doSthOnPicture(int startX, int startY, int lenX, int lenY) {...}

doSthOnPicture(0,0,10,10); // Thread1
doSthOnPicture(0,10,10,10); // Thread2
doSthOnPicture(0,20,10,10); // Thread3
```

Das mit ThreadPools, oder Executors oder was immer du auch brauchst.

Edit: Ich denke nämlich das zerteilen und wieder zusammenfügen (erst recht weil du es ja auf der Festplatte speichern willst) wird dich mehr Zeit kosten, als die Arbeit einfach parallel erledigen zu lassen.


----------



## PHANTOMIAS (3. Feb 2010)

Ja, okay, aber ich brauche das Zerschneiden für meine Manipulationen sowieso.
Also muss ich das Bild in Blöcke aufteilen und ich habe wie gesagt etwas von TiledImage gesehen.
Wie macht man das?


----------

