PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bilder speichern in Java?


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?

HellHorse
2005-09-19, 22:17:37
1. wenn du willst, dass jemand deinen Code anschaut benutze [ code ]-Tags
2. muss es JAI sein oder reicht auch ImageIO (http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/ImageIO.html)

elianda
2005-09-21, 15:06:58
ImageIO kam erst spaeter raus (nachdem ichs mit JAI gemacht hatte), wuerde aber prinzipiell auch reichen.
IMHO aendert es aber am Grundproblem nichts, da die write Methode auch ein RenderedImage haben moechte?!?

HellHorse
2005-09-21, 19:01:04
Ach so. Es ist ja nur ein Teil deprecated. Warum verwendest du nicht einfach den nicht deprecated Konstruktor (http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/TiledImage.html#TiledImage(int,%20int,%20int,%20int,%20int,%20int,%20java.awt.im age.SampleModel,%20java.awt.image.ColorModel))?
Alternativ könntest ja mal BufferedImage probieren.

elianda
2005-09-28, 14:02:28
Ok manchmal sieht man den Wald vor Baeumen nicht. Ich habe ja sogar schon das (bisher ungenutzte) ColorModel definiert, das man fuer den non-deprecated Constructor braucht. :redface: