Domanda

Sto cercando di prendere un BufferedImage, applicare una trasformata di Fourier (usando jtransforms), e scrivere la parte posteriore dei dati al BufferedImage. Ma io sono bloccato la creazione di una nuova Raster per impostare i risultati indietro, mi sto perdendo qualcosa qui?

BufferedImage bitmap;
float [] bitfloat = null;

bitmap = ImageIO.read(new File("filename"));
FloatDCT_2D dct = new FloatDCT_2D(bitmap.getWidth(),bitmap.getHeight());

bitfloat = bitmap.getData().getPixels(0, 0, bitmap.getWidth(), bitmap.getHeight(), bitfloat);
dct.forward(bitfloat, false);

Ma stumped cercando di finire fuori questa linea, che cosa devo dare la funzione createRaster? I javadocs per createRaster rendono poco senso per me:

bitmap.setData(Raster.createRaster(`arg1`, `arg2`, `arg3`));

sto cominciando a chiedersi se una matrice galleggiante è ancora necessaria, ma non ci sono molti esempi di jtransforms là fuori.

È stato utile?

Soluzione

Non creare un nuovo Raster. Utilizzare WritableRaster.setPixels(int,int,int,int,float[]) per scrivere retro matrice all'immagine.

final int w = bitmap.getWidth();
final int h = bitmap.getHeight();

final WritableRaster wr = bitmap.getData();
bitfloat = wr.getPixels(0, 0, w, h, bitfloat);

// do processing here

wr.setPixels(0, 0, w, h, bitfloat);    

Si noti inoltre che se hai intenzione di visualizzare questa immagine, si dovrebbe davvero copiarla in una schermo compatibile tipo ; ImageIO ritorna raramente quelli.

Altri suggerimenti

Sto facendo ricerche su Google per FloatDCT_2D per vedere quale pacchetto / biblioteca si trova, e sembra che ci sono diversi riferimenti a varie fonti, come ad esempio "edu.emory.mathcs.jtransforms.dct.FloatDCT_2D". Senza sapere che cosa libreria personalizzata che si sta utilizzando, è davvero difficile per darvi qualche consiglio su come eseguire la trasformazione.

La mia ipotesi è, in generale, che si dovrebbe leggere i dati di ingresso del raster originale, eseguire la trasformazione su dati originali, quindi scrivere l'output in un nuovo raster.

Tuttavia, la tua ultima affermazione tutto sul suo aspetto proprio strana ... sembra Raster.createRaster() Come si sta chiamando un metodo statico senza parametri su una classe che non hai mai fatto riferimento nel codice che hai postato. Come è che i dati di generazione per la vostra bitmap ??? Anche in pseudo codice, si avrebbe bisogno di prendere i risultati della vostra trasformare e costruire il raster risultante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top