use of java.awt.image.SinglePixelPackedSampleModel in project vcell by virtualcell.
the class RasterExporter method createTextureImage.
private static BufferedImage createTextureImage(int imageSideLength) {
int[] texImage = new int[imageSideLength * imageSideLength];
int[] bitMasks = new int[] { 0xFF0000, 0xFF00, 0xFF, 0xFF000000 };
SinglePixelPackedSampleModel sm = new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT, imageSideLength, imageSideLength, bitMasks);
DataBufferInt db = new DataBufferInt(texImage, texImage.length);
WritableRaster wr = Raster.createWritableRaster(sm, db, new Point());
BufferedImage image = new BufferedImage(ColorModel.getRGBdefault(), wr, false, null);
return image;
}
use of java.awt.image.SinglePixelPackedSampleModel in project Lucee by lucee.
the class Image method jpgImage.
private static BufferedImage jpgImage(BufferedImage src) {
int w = src.getWidth();
int h = src.getHeight();
SampleModel srcSM = src.getSampleModel();
WritableRaster srcWR = src.getRaster();
java.awt.image.DataBuffer srcDB = srcWR.getDataBuffer();
ColorModel rgb = new DirectColorModel(32, 0xff0000, 65280, 255);
int[] bitMasks = new int[] { 0xff0000, 65280, 255 };
SampleModel csm = new SinglePixelPackedSampleModel(3, w, h, bitMasks);
int[] data = new int[w * h];
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
int[] pix = null;
int[] sample = srcSM.getPixel(j, i, pix, srcDB);
if (sample[3] == 0 && sample[2] == 0 && sample[1] == 0 && sample[0] == 0)
data[i * w + j] = 0xffffff;
else
data[i * w + j] = sample[0] << 16 | sample[1] << 8 | sample[2];
}
}
java.awt.image.DataBuffer db = new DataBufferInt(data, w * h * 3);
WritableRaster wr = Raster.createWritableRaster(csm, db, new Point(0, 0));
return new BufferedImage(rgb, wr, false, null);
}
Aggregations