elianda
2005-09-19, 12:12:51
Hallo,
ich habe eine Routine die Bilder in verschiedenen Formaten in Java mit Hilfe von
Java Advanced Imaging (JAI) speichert.
Nun ist mittlerweile die API TiledImage deprecated und ich habe noch nicht so ganz herausgefunden wie man es 'besser' macht, bzw. auf den aktuellen Stand bringt.
Der alte Code sieht folgendermassen aus:
man definiert ein RenderedImage:
public RenderedImage createRenderedImageShort(short[] theData, int width, int height, int numBands) {
int len = width * height;
Point origin = new Point(0,0);
SampleModel sampleModel = RasterFactory.createBandedSampleModel(DataBuffer.TYPE_SHORT, width, height, numBands);
ColorModel colourModel = PlanarImage.createColorModel(sampleModel);
TiledImage ti = new TiledImage(origin, sampleModel, width, height);
DataBufferShort dataBuffer = new DataBufferShort(theData, len);
Raster raster = RasterFactory.createWritableRaster(sampleModel, dataBuffer, origin);
ti.setData(raster);
RenderedImageAdapter img = new RenderedImageAdapter((RenderedImage)ti);
return img;
}
Je nach Farbtiefe ist theData ein array von byte , short oder int
gespeichert wird dann so (Beispiel TIFF):
RenderedImage ri;
RenderedOp op;
TIFFEncodeParam tiff_ep;
tiff_ep=new TIFFEncodeParam();
ri=createRenderedImageInt(rint,im_xsize,im_ysize,1);
op = JAI.create("filestore", ri,edir+efile,"tiff",tiff_ep);
Wie bekomm ich das nun auf den neuen Stand, moeglichst ohne den Code grundlegend anders gestalten zu muessen?
ich habe eine Routine die Bilder in verschiedenen Formaten in Java mit Hilfe von
Java Advanced Imaging (JAI) speichert.
Nun ist mittlerweile die API TiledImage deprecated und ich habe noch nicht so ganz herausgefunden wie man es 'besser' macht, bzw. auf den aktuellen Stand bringt.
Der alte Code sieht folgendermassen aus:
man definiert ein RenderedImage:
public RenderedImage createRenderedImageShort(short[] theData, int width, int height, int numBands) {
int len = width * height;
Point origin = new Point(0,0);
SampleModel sampleModel = RasterFactory.createBandedSampleModel(DataBuffer.TYPE_SHORT, width, height, numBands);
ColorModel colourModel = PlanarImage.createColorModel(sampleModel);
TiledImage ti = new TiledImage(origin, sampleModel, width, height);
DataBufferShort dataBuffer = new DataBufferShort(theData, len);
Raster raster = RasterFactory.createWritableRaster(sampleModel, dataBuffer, origin);
ti.setData(raster);
RenderedImageAdapter img = new RenderedImageAdapter((RenderedImage)ti);
return img;
}
Je nach Farbtiefe ist theData ein array von byte , short oder int
gespeichert wird dann so (Beispiel TIFF):
RenderedImage ri;
RenderedOp op;
TIFFEncodeParam tiff_ep;
tiff_ep=new TIFFEncodeParam();
ri=createRenderedImageInt(rint,im_xsize,im_ysize,1);
op = JAI.create("filestore", ri,edir+efile,"tiff",tiff_ep);
Wie bekomm ich das nun auf den neuen Stand, moeglichst ohne den Code grundlegend anders gestalten zu muessen?