Frage

Ich versuche den Quantizefilter in zu verwenden

http://www.jhlabs.com/IP/Filters/index.html

, um die Farbtiefe eines Screenshots zu reduzieren.

Hier ist mein sehr sehr einfacher Code: generasacodicetagpre.

Allerdings, was ich nicht mehr bin, ist:

original img:

Bildbeschreibung eingeben Hier eingeben

quantisierter img:

Bildbeschreibung eingeben hier

Eine weitere Analyse des Problems zeigt, dass das Inpixel-Array falsch gefüllt ist. Es ist dreimal mit dem oberen Drittel des Originalbildes gefüllt.

Alle Zeigern, wie ich das beheben kann?

zusätzlich alle Links guten + schnellen Quantisierungsalgorithmus in Java? Was ich suche, ist ein Algorithmus, der ein type_t_bgr-Image annimmt, und erzeugt ein neues typ_int_bgr-Bild, jedoch mit weniger tatsächlicher Differenz in Pixeln, so dass er leicht defliniert werden kann.

Beispielsweise, wenn wir zwei Pixel im Originalbild haben, mit Werten wie 255, 255, 234 und einem anderen mit einem Wert wie 255, 255, 236, sollten beide auf 255,255,240 umgewandelt werden. Prost

War es hilfreich?

Lösung

The following example will convert your image correctly:

QuantizeFilter q = new QuantizeFilter();
int [] inPixels = new int[image.getWidth()*image.getHeight()*3];
int [] outPixels = new int[image.getWidth()*image.getHeight()*3];
image.getRaster().getPixels( 0, 0, image.getWidth(), image.getHeight(), inPixels );
q.quantize(inPixels, outPixels, image.getWidth(), image.getHeight(), 64, false, false);
WritableRaster raster = (WritableRaster) image.getData();
raster.setPixels(0,0,width,height,outPixels);

Also there is no reason to create the files implicitly, as ImageIO.write creates them automatically.

Andere Tipps

I have had the same problem and its not the code you posted that's at fault it's the QuantizeFilter class which doesn't go through all the pixels. You need to find this code part

 if (!dither) {
        for (int i = 0; i < count; i++)
            outPixels[i] = table[quantizer.getIndexForColor(inPixels[i])];

and multiply count by 3.

Please note that this is only a a fix if the last 2 parameters are set to false.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top