java.awt.image.ComponentColorModel Java Examples
The following examples show how to use
java.awt.image.ComponentColorModel.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ImageTypeSpecifier.java From jdk1.8-source-analysis with Apache License 2.0 | 6 votes |
static ColorModel createComponentCM(ColorSpace colorSpace, int numBands, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) { int transparency = hasAlpha ? Transparency.TRANSLUCENT : Transparency.OPAQUE; int[] numBits = new int[numBands]; int bits = DataBuffer.getDataTypeSize(dataType); for (int i = 0; i < numBands; i++) { numBits[i] = bits; } return new ComponentColorModel(colorSpace, numBits, hasAlpha, isAlphaPremultiplied, transparency, dataType); }
Example #2
Source File: IncorrectManagedImageSourceOffset.java From TencentKona-8 with GNU General Public License v2.0 | 6 votes |
/** * Returns the custom buffered image, which mostly identical to * BufferedImage.(w,h,TYPE_3BYTE_BGR), but uses the bigger scanlineStride. * This means that the raster will have gaps, between the rows. */ private static BufferedImage makeCustomManagedBI() { int w = 511, h = 255; ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int[] nBits = {8, 8, 8}; int[] bOffs = {2, 1, 0}; ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, w * 3 + 2, 3, bOffs, null); BufferedImage bi = new BufferedImage(colorModel, raster, true, null); SunWritableRaster.makeTrackable(raster.getDataBuffer()); SunWritableRaster.markDirty(bi); return bi; }
Example #3
Source File: SimpleManagedImage.java From TencentKona-8 with GNU General Public License v2.0 | 6 votes |
/** * Returns the custom buffered image, which mostly identical to * BufferedImage.(w,h,TYPE_3BYTE_BGR), but uses the bigger scanlineStride. * This means that the raster will have gaps, between the rows. */ private static BufferedImage makeCustomManagedBI() { int w = 511, h = 255; ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int[] nBits = {8, 8, 8}; int[] bOffs = {2, 1, 0}; ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, w * 3 + 2, 3, bOffs, null); BufferedImage bi = new BufferedImage(colorModel, raster, true, null); SunWritableRaster.makeTrackable(raster.getDataBuffer()); SunWritableRaster.markDirty(bi); return bi; }
Example #4
Source File: PDColorSpace.java From sambox with Apache License 2.0 | 6 votes |
/** * Returns the (A)RGB equivalent of the given raster, using the given AWT color space to perform the conversion. * * @param raster the source raster * @param colorSpace the AWT * @return an (A)RGB buffered image */ protected BufferedImage toRGBImageAWT(WritableRaster raster, ColorSpace colorSpace) { // // WARNING: this method is performance sensitive, modify with care! // // ICC Profile color transforms are only fast when performed using ColorConvertOp ColorModel colorModel = new ComponentColorModel(colorSpace, false, false, Transparency.OPAQUE, raster.getDataBuffer().getDataType()); BufferedImage src = new BufferedImage(colorModel, raster, false, null); BufferedImage dest = new BufferedImage(raster.getWidth(), raster.getHeight(), BufferedImage.TYPE_INT_RGB); ColorConvertOp op = new ColorConvertOp(null); op.filter(src, dest); return dest; }
Example #5
Source File: IncorrectManagedImageSourceOffset.java From openjdk-jdk8u with GNU General Public License v2.0 | 6 votes |
/** * Returns the custom buffered image, which mostly identical to * BufferedImage.(w,h,TYPE_3BYTE_BGR), but uses the bigger scanlineStride. * This means that the raster will have gaps, between the rows. */ private static BufferedImage makeCustomManagedBI() { int w = 511, h = 255; ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int[] nBits = {8, 8, 8}; int[] bOffs = {2, 1, 0}; ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, w * 3 + 2, 3, bOffs, null); BufferedImage bi = new BufferedImage(colorModel, raster, true, null); SunWritableRaster.makeTrackable(raster.getDataBuffer()); SunWritableRaster.markDirty(bi); return bi; }
Example #6
Source File: ImageTypeSpecifier.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 6 votes |
static ColorModel createComponentCM(ColorSpace colorSpace, int numBands, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) { int transparency = hasAlpha ? Transparency.TRANSLUCENT : Transparency.OPAQUE; int[] numBits = new int[numBands]; int bits = DataBuffer.getDataTypeSize(dataType); for (int i = 0; i < numBands; i++) { numBits[i] = bits; } return new ComponentColorModel(colorSpace, numBits, hasAlpha, isAlphaPremultiplied, transparency, dataType); }
Example #7
Source File: ShadingContext.java From gcs with Mozilla Public License 2.0 | 6 votes |
/** * Constructor. * * @param shading the shading type to be used * @param cm the color model to be used * @param xform transformation for user to device space * @param matrix the pattern matrix concatenated with that of the parent content stream * @throws java.io.IOException if there is an error getting the color space * or doing background color conversion. */ public ShadingContext(PDShading shading, ColorModel cm, AffineTransform xform, Matrix matrix) throws IOException { this.shading = shading; shadingColorSpace = shading.getColorSpace(); // create the output color model using RGB+alpha as color space ColorSpace outputCS = ColorSpace.getInstance(ColorSpace.CS_sRGB); outputColorModel = new ComponentColorModel(outputCS, true, false, Transparency.TRANSLUCENT, DataBuffer.TYPE_BYTE); // get background values if available COSArray bg = shading.getBackground(); if (bg != null) { background = bg.toFloatArray(); rgbBackground = convertToRGB(background); } }
Example #8
Source File: ImageTypeSpecifier.java From TencentKona-8 with GNU General Public License v2.0 | 6 votes |
static ColorModel createComponentCM(ColorSpace colorSpace, int numBands, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) { int transparency = hasAlpha ? Transparency.TRANSLUCENT : Transparency.OPAQUE; int[] numBits = new int[numBands]; int bits = DataBuffer.getDataTypeSize(dataType); for (int i = 0; i < numBands; i++) { numBits[i] = bits; } return new ComponentColorModel(colorSpace, numBits, hasAlpha, isAlphaPremultiplied, transparency, dataType); }
Example #9
Source File: SimpleManagedImage.java From openjdk-jdk8u with GNU General Public License v2.0 | 6 votes |
/** * Returns the custom buffered image, which mostly identical to * BufferedImage.(w,h,TYPE_3BYTE_BGR), but uses the bigger scanlineStride. * This means that the raster will have gaps, between the rows. */ private static BufferedImage makeCustomManagedBI() { int w = 511, h = 255; ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int[] nBits = {8, 8, 8}; int[] bOffs = {2, 1, 0}; ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, w * 3 + 2, 3, bOffs, null); BufferedImage bi = new BufferedImage(colorModel, raster, true, null); SunWritableRaster.makeTrackable(raster.getDataBuffer()); SunWritableRaster.markDirty(bi); return bi; }
Example #10
Source File: ImageTypeSpecifier.java From jdk8u-dev-jdk with GNU General Public License v2.0 | 6 votes |
static ColorModel createComponentCM(ColorSpace colorSpace, int numBands, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) { int transparency = hasAlpha ? Transparency.TRANSLUCENT : Transparency.OPAQUE; int[] numBits = new int[numBands]; int bits = DataBuffer.getDataTypeSize(dataType); for (int i = 0; i < numBands; i++) { numBits[i] = bits; } return new ComponentColorModel(colorSpace, numBits, hasAlpha, isAlphaPremultiplied, transparency, dataType); }
Example #11
Source File: ImageTypeSpecifier.java From jdk8u-jdk with GNU General Public License v2.0 | 6 votes |
static ColorModel createComponentCM(ColorSpace colorSpace, int numBands, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) { int transparency = hasAlpha ? Transparency.TRANSLUCENT : Transparency.OPAQUE; int[] numBits = new int[numBands]; int bits = DataBuffer.getDataTypeSize(dataType); for (int i = 0; i < numBands; i++) { numBits[i] = bits; } return new ComponentColorModel(colorSpace, numBits, hasAlpha, isAlphaPremultiplied, transparency, dataType); }
Example #12
Source File: PCXReader.java From icafe with Eclipse Public License 1.0 | 6 votes |
private BufferedImage readTrueColorPcx(InputStream is) throws Exception { byte brgb[] = IOUtils.readFully(is, 4096); byte pixels[] = new byte[bytesPerLine*NPlanes*height]; /** * A BufferedInputStream could have been constructed from the InputStream, * but for maximum decoding speed, one time reading of the image data * into memory is ideal though this is memory consuming. */ LOGGER.info("true color pcx image!"); readScanLines(brgb, brgb.length, pixels); is.close(); DataBuffer db = new DataBufferByte(pixels, pixels.length); int trans = Transparency.OPAQUE; int[] nBits = {8, 8, 8}; WritableRaster raster = Raster.createBandedRaster(db, width, height, bytesPerLine*3, new int[]{0, 0, 0}, new int[] {0, bytesPerLine, bytesPerLine*2}, null); ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), nBits, false, false, trans, DataBuffer.TYPE_BYTE); return new BufferedImage(cm, raster, false, null); }
Example #13
Source File: IntegerRaster.java From osp with GNU General Public License v3.0 | 6 votes |
/** * Constructs IntegerRaster with the given size. * @param _nrow the number of rows * @param _ncol the number of columns */ public IntegerRaster(int _nrow, int _ncol) { nrow = _nrow; ncol = _ncol; dimension = new Dimension(ncol, nrow); int size = nrow*ncol; ComponentColorModel ccm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), new int[] {8, 8, 8}, false, // hasAlpha false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); BandedSampleModel csm = new BandedSampleModel(DataBuffer.TYPE_BYTE, ncol, nrow, ncol, new int[] {0, 1, 2}, new int[] {0, 0, 0}); rgbData = new byte[3][size]; DataBuffer databuffer = new DataBufferByte(rgbData, size); WritableRaster raster = Raster.createWritableRaster(csm, databuffer, new Point(0, 0)); image = new BufferedImage(ccm, raster, false, null); // col in x direction, row in y direction xmin = 0; xmax = ncol; ymin = nrow; ymax = 0; // zero is on top }
Example #14
Source File: SignedColorModel.java From scifio with BSD 2-Clause "Simplified" License | 6 votes |
public SignedColorModel(final int pixelBits, final int dataType, final int nChannels) { super(pixelBits, makeBitArray(nChannels, pixelBits), AWTImageTools .makeColorSpace(nChannels), nChannels == 4, false, Transparency.TRANSLUCENT, dataType); int type = dataType; if (type == DataBuffer.TYPE_SHORT) { type = DataBuffer.TYPE_USHORT; } helper = new ComponentColorModel(AWTImageTools.makeColorSpace(nChannels), nChannels == 4, false, Transparency.TRANSLUCENT, type); this.pixelBits = pixelBits; this.nChannels = nChannels; max = (int) Math.pow(2, pixelBits) - 1; }
Example #15
Source File: ImageTypeSpecifier.java From openjdk-jdk8u with GNU General Public License v2.0 | 6 votes |
static ColorModel createComponentCM(ColorSpace colorSpace, int numBands, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) { int transparency = hasAlpha ? Transparency.TRANSLUCENT : Transparency.OPAQUE; int[] numBits = new int[numBands]; int bits = DataBuffer.getDataTypeSize(dataType); for (int i = 0; i < numBands; i++) { numBits[i] = bits; } return new ComponentColorModel(colorSpace, numBits, hasAlpha, isAlphaPremultiplied, transparency, dataType); }
Example #16
Source File: ImageTypeSpecifier.java From openjdk-8 with GNU General Public License v2.0 | 6 votes |
static ColorModel createComponentCM(ColorSpace colorSpace, int numBands, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) { int transparency = hasAlpha ? Transparency.TRANSLUCENT : Transparency.OPAQUE; int[] numBits = new int[numBands]; int bits = DataBuffer.getDataTypeSize(dataType); for (int i = 0; i < numBands; i++) { numBits[i] = bits; } return new ComponentColorModel(colorSpace, numBits, hasAlpha, isAlphaPremultiplied, transparency, dataType); }
Example #17
Source File: IncorrectManagedImageSourceOffset.java From jdk8u_jdk with GNU General Public License v2.0 | 6 votes |
/** * Returns the custom buffered image, which mostly identical to * BufferedImage.(w,h,TYPE_3BYTE_BGR), but uses the bigger scanlineStride. * This means that the raster will have gaps, between the rows. */ private static BufferedImage makeCustomManagedBI() { int w = 511, h = 255; ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int[] nBits = {8, 8, 8}; int[] bOffs = {2, 1, 0}; ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, w * 3 + 2, 3, bOffs, null); BufferedImage bi = new BufferedImage(colorModel, raster, true, null); SunWritableRaster.makeTrackable(raster.getDataBuffer()); SunWritableRaster.markDirty(bi); return bi; }
Example #18
Source File: ImageTypeSpecifier.java From dragonwell8_jdk with GNU General Public License v2.0 | 6 votes |
static ColorModel createComponentCM(ColorSpace colorSpace, int numBands, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied) { int transparency = hasAlpha ? Transparency.TRANSLUCENT : Transparency.OPAQUE; int[] numBits = new int[numBands]; int bits = DataBuffer.getDataTypeSize(dataType); for (int i = 0; i < numBands; i++) { numBits[i] = bits; } return new ComponentColorModel(colorSpace, numBits, hasAlpha, isAlphaPremultiplied, transparency, dataType); }
Example #19
Source File: LosslessFactoryTest.java From sambox with Apache License 2.0 | 6 votes |
public void testCreateLosslessFrom16Bit() throws IOException { PDDocument document = new PDDocument(); BufferedImage image = ImageIO.read(this.getClass().getResourceAsStream("png.png")); ColorSpace targetCS = ColorSpace.getInstance(ColorSpace.CS_sRGB); int dataBufferType = DataBuffer.TYPE_USHORT; final ColorModel colorModel = new ComponentColorModel(targetCS, false, false, ColorModel.OPAQUE, dataBufferType); WritableRaster targetRaster = Raster.createInterleavedRaster(dataBufferType, image.getWidth(), image.getHeight(), targetCS.getNumComponents(), new Point(0, 0)); BufferedImage img16Bit = new BufferedImage(colorModel, targetRaster, false, new Hashtable()); ColorConvertOp op = new ColorConvertOp(image.getColorModel().getColorSpace(), targetCS, null); op.filter(image, img16Bit); PDImageXObject ximage = LosslessFactory.createFromImage(img16Bit); validate(ximage, 16, img16Bit.getWidth(), img16Bit.getHeight(), "png", PDDeviceRGB.INSTANCE.getName()); checkIdent(image, ximage.getImage()); doWritePDF(document, ximage, testResultsDir, "misc-16bit.pdf"); }
Example #20
Source File: RenderToCustomBufferTest.java From jdk8u-dev-jdk with GNU General Public License v2.0 | 5 votes |
private static BufferedImage createCustomBuffer() { ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); ColorModel cm = new ComponentColorModel(cs, false, false, Transparency.OPAQUE, DataBuffer.TYPE_FLOAT); WritableRaster wr = cm.createCompatibleWritableRaster(width, height); return new BufferedImage(cm, wr, false, null); }
Example #21
Source File: JFIFMarkerSegment.java From openjdk-8 with GNU General Public License v2.0 | 5 votes |
BufferedImage getThumbnail(ImageInputStream iis, JPEGImageReader reader) throws IOException { iis.mark(); iis.seek(streamPos); DataBufferByte buffer = new DataBufferByte(getLength()); readByteBuffer(iis, buffer.getData(), reader, 1.0F, 0.0F); iis.reset(); WritableRaster raster = Raster.createInterleavedRaster(buffer, thumbWidth, thumbHeight, thumbWidth*3, 3, new int [] {0, 1, 2}, null); ColorModel cm = new ComponentColorModel(JPEG.JCS.sRGB, false, false, ColorModel.OPAQUE, DataBuffer.TYPE_BYTE); return new BufferedImage(cm, raster, false, null); }
Example #22
Source File: JFIFMarkerSegment.java From JDKSourceCode1.8 with MIT License | 5 votes |
BufferedImage getThumbnail(ImageInputStream iis, JPEGImageReader reader) throws IOException { iis.mark(); iis.seek(streamPos); DataBufferByte buffer = new DataBufferByte(getLength()); readByteBuffer(iis, buffer.getData(), reader, 1.0F, 0.0F); iis.reset(); WritableRaster raster = Raster.createInterleavedRaster(buffer, thumbWidth, thumbHeight, thumbWidth*3, 3, new int [] {0, 1, 2}, null); ColorModel cm = new ComponentColorModel(JPEG.JCS.sRGB, false, false, ColorModel.OPAQUE, DataBuffer.TYPE_BYTE); return new BufferedImage(cm, raster, false, null); }
Example #23
Source File: BMPSubsamplingTest.java From openjdk-8 with GNU General Public License v2.0 | 5 votes |
private BufferedImage create3ByteImage(int[] nBits, int[] bOffs) { ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, w*3, 3, bOffs, null); return new BufferedImage(colorModel, raster, false, null); }
Example #24
Source File: GDIWindowSurfaceData.java From openjdk-jdk9 with GNU General Public License v2.0 | 5 votes |
public static SurfaceType getSurfaceType(ColorModel cm) { switch (cm.getPixelSize()) { case 32: case 24: if (cm instanceof DirectColorModel) { if (((DirectColorModel)cm).getRedMask() == 0xff0000) { return IntRgbGdi; } else { return SurfaceType.IntRgbx; } } else { return ThreeByteBgrGdi; } case 15: return Ushort555RgbGdi; case 16: if ((cm instanceof DirectColorModel) && (((DirectColorModel)cm).getBlueMask() == 0x3e)) { return SurfaceType.Ushort555Rgbx; } else { return Ushort565RgbGdi; } case 8: if (cm.getColorSpace().getType() == ColorSpace.TYPE_GRAY && cm instanceof ComponentColorModel) { return SurfaceType.ByteGray; } else if (cm instanceof IndexColorModel && isOpaqueGray((IndexColorModel)cm)) { return SurfaceType.Index8Gray; } else { return SurfaceType.ByteIndexedOpaque; } default: throw new sun.java2d.InvalidPipeException("Unsupported bit " + "depth: " + cm.getPixelSize()); } }
Example #25
Source File: X11GraphicsConfig.java From openjdk-8 with GNU General Public License v2.0 | 5 votes |
public static ComponentColorModel createABGRCCM() { ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int[] nBits = {8, 8, 8, 8}; int[] bOffs = {3, 2, 1, 0}; return new ComponentColorModel(cs, nBits, true, true, Transparency.TRANSLUCENT, DataBuffer.TYPE_BYTE); }
Example #26
Source File: BMPSubsamplingTest.java From jdk8u_jdk with GNU General Public License v2.0 | 5 votes |
private BufferedImage create3ByteImage(int[] nBits, int[] bOffs) { ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, w*3, 3, bOffs, null); return new BufferedImage(colorModel, raster, false, null); }
Example #27
Source File: JFIFMarkerSegment.java From openjdk-jdk8u with GNU General Public License v2.0 | 5 votes |
BufferedImage getThumbnail(ImageInputStream iis, JPEGImageReader reader) throws IOException { iis.mark(); iis.seek(streamPos); DataBufferByte buffer = new DataBufferByte(getLength()); readByteBuffer(iis, buffer.getData(), reader, 1.0F, 0.0F); iis.reset(); WritableRaster raster = Raster.createInterleavedRaster(buffer, thumbWidth, thumbHeight, thumbWidth*3, 3, new int [] {0, 1, 2}, null); ColorModel cm = new ComponentColorModel(JPEG.JCS.sRGB, false, false, ColorModel.OPAQUE, DataBuffer.TYPE_BYTE); return new BufferedImage(cm, raster, false, null); }
Example #28
Source File: GDIWindowSurfaceData.java From openjdk-8-source with GNU General Public License v2.0 | 5 votes |
public static SurfaceType getSurfaceType(ColorModel cm) { switch (cm.getPixelSize()) { case 32: case 24: if (cm instanceof DirectColorModel) { if (((DirectColorModel)cm).getRedMask() == 0xff0000) { return IntRgbGdi; } else { return SurfaceType.IntRgbx; } } else { return ThreeByteBgrGdi; } case 15: return Ushort555RgbGdi; case 16: if ((cm instanceof DirectColorModel) && (((DirectColorModel)cm).getBlueMask() == 0x3e)) { return SurfaceType.Ushort555Rgbx; } else { return Ushort565RgbGdi; } case 8: if (cm.getColorSpace().getType() == ColorSpace.TYPE_GRAY && cm instanceof ComponentColorModel) { return SurfaceType.ByteGray; } else if (cm instanceof IndexColorModel && isOpaqueGray((IndexColorModel)cm)) { return SurfaceType.Index8Gray; } else { return SurfaceType.ByteIndexedOpaque; } default: throw new sun.java2d.InvalidPipeException("Unsupported bit " + "depth: " + cm.getPixelSize()); } }
Example #29
Source File: X11GraphicsConfig.java From openjdk-jdk8u with GNU General Public License v2.0 | 5 votes |
public static ComponentColorModel createABGRCCM() { ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int[] nBits = {8, 8, 8, 8}; int[] bOffs = {3, 2, 1, 0}; return new ComponentColorModel(cs, nBits, true, true, Transparency.TRANSLUCENT, DataBuffer.TYPE_BYTE); }
Example #30
Source File: SimpleUnmanagedImage.java From openjdk-jdk8u with GNU General Public License v2.0 | 5 votes |
/** * Returns the custom buffered image, which mostly identical to * BufferedImage.(w,h,TYPE_3BYTE_BGR), but uses the bigger scanlineStride. * This means that the raster will have gaps, between the rows. */ private static BufferedImage makeCustomUnmanagedBI() { int w = 511, h = 255; ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int[] nBits = {8, 8, 8}; int[] bOffs = {2, 1, 0}; ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, w * 3 + 2, 3, bOffs, null); return new BufferedImage(colorModel, raster, true, null); }