private static PDImageXObject createJPEG(PDDocument document, BufferedImage image, float quality, int dpi) throws IOException { // extract alpha channel (if any) BufferedImage awtColorImage = getColorImage(image); BufferedImage awtAlphaImage = getAlphaImage(image); // create XObject ByteArrayOutputStream baos = new ByteArrayOutputStream(); encodeImageToJPEGStream(awtColorImage, quality, dpi, baos); ByteArrayInputStream byteStream = new ByteArrayInputStream(baos.toByteArray()); PDImageXObject pdImage = new PDImageXObject(document, byteStream, COSName.DCT_DECODE, awtColorImage.getWidth(), awtColorImage.getHeight(), awtColorImage.getColorModel().getComponentSize(0), getColorSpaceFromAWT(awtColorImage)); // alpha -> soft mask if (awtAlphaImage != null) { PDImage xAlpha = JPEGFactory.createFromImage(document, awtAlphaImage, quality); pdImage.getCOSObject().setItem(COSName.SMASK, xAlpha); } return pdImage; }
final int[] channelMax = new int[numChannels]; for (int k = 0; k < numChannels; k++) { channelMax[k] = (1 << pSource.getColorModel().getComponentSize(k)) - 1;
@Test public void testGetColorModelJPEG() { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); ColorModel colorModel = factory.getColorModel(); assertNotNull(colorModel); assertEquals(3, colorModel.getNumColorComponents()); // getNumComponents may include alpha, we don't care assertEquals(ColorSpace.getInstance(ColorSpace.CS_sRGB), colorModel.getColorSpace()); for (int i = 0; i < colorModel.getNumComponents(); i++) { assertEquals(8, colorModel.getComponentSize(i)); } }
/** Computes the length of this box from the provided * <code>ColorModel</code>. */ private static int computeLength(ColorModel colorModel) { int length = colorModel.getComponentSize().length - 1; return 10 + (colorModel.isAlphaPremultiplied() ? length * 18 : length * 12); }
/** Computes the length of this box from the provided * <code>ColorModel</code>. */ private static int computeLength(ColorModel colorModel) { int length = colorModel.getComponentSize().length - 1; return 10 + (colorModel.isAlphaPremultiplied() ? length * 18 : length * 12); }
/** Computes the length of this box from the provided * <code>ColorModel</code>. */ private static int computeLength(ColorModel colorModel) { int length = colorModel.getComponentSize().length - 1; return 10 + (colorModel.isAlphaPremultiplied() ? length * 18 : length * 12); }
/** * Computes the length of this box from the provided <code>ColorModel</code>. */ private static int computeLength(ColorModel colorModel) { int length = colorModel.getComponentSize().length - 1; return 10 + (colorModel.isAlphaPremultiplied() ? length * 18 : length * 12); }
/** Computes the length of this box from the provided * <code>ColorModel</code>. */ private static int computeLength(ColorModel colorModel) { int length = colorModel.getComponentSize().length - 1; return 10 + (colorModel.isAlphaPremultiplied() ? length * 18 : length * 12); }
/** Computes the length of this box from the provided * <code>ColorModel</code>. */ private static int computeLength(ColorModel colorModel) { int length = colorModel.getComponentSize().length - 1; return 10 + (colorModel.isAlphaPremultiplied() ? length * 18 : length * 12); }
? IHSColorSpaceJAIExt.getInstance() : IHSColorSpace.getInstance(); final int numBits = image.getColorModel().getComponentSize(0); final ColorModel ihsColorModel = new ComponentColorModel(
@Test public void testGetColorModelGIF() { URL resource = getClass().getResource("/tux.gif"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); ColorModel colorModel = factory.getColorModel(); assertNotNull(colorModel); assertEquals(3, colorModel.getNumColorComponents()); assertEquals(ColorSpace.getInstance(ColorSpace.CS_sRGB), colorModel.getColorSpace()); assertTrue(colorModel instanceof IndexColorModel); assertTrue(colorModel.hasAlpha()); assertEquals(4, colorModel.getNumComponents()); assertTrue(((IndexColorModel) colorModel).getTransparentPixel() >= 0); assertEquals(Transparency.BITMASK, colorModel.getTransparency()); for (int i = 0; i < colorModel.getNumComponents(); i++) { assertEquals(8, colorModel.getComponentSize(i)); } }
ImageParameters(ColorModel cm, SampleModel sm) { this.colorModel = cm; this.sampleModel = sm; this.dataType = sm.getDataType(); this.isFloat = this.dataType == DataBuffer.TYPE_FLOAT || this.dataType == DataBuffer.TYPE_DOUBLE; this.minValue = ColorConvertOpImage.getMinValue(this.dataType); this.range = ColorConvertOpImage.getRange(this.dataType); this.componentSize = cm.getComponentSize(); }
ImageParameters(ColorModel cm, SampleModel sm) { this.colorModel = cm; this.sampleModel = sm; this.dataType = sm.getDataType(); this.isFloat = this.dataType == DataBuffer.TYPE_FLOAT || this.dataType == DataBuffer.TYPE_DOUBLE; this.minValue = ColorConvertOpImage.getMinValue(this.dataType); this.range = ColorConvertOpImage.getRange(this.dataType); this.componentSize = cm.getComponentSize(); }
@Override public void doStartupSanityChecks() { // test to make assert that the bit depth has 8 bits per pixel ColorModel colorModel = GraphicsEnvironment.getLocalGraphicsEnvironment(). getDefaultScreenDevice().getDefaultConfiguration().getColorModel(); int[] bitAllocations = colorModel.getComponentSize(); // don't count alpha bits int bitDepth = bitAllocations[0] + bitAllocations[1] + bitAllocations[2]; if(bitDepth != 24) { throw new IllegalStateException("Display colour depth incorrect (should be 8 bits of red, blue and green). Currently: " + bitAllocations[0] + "-" + bitAllocations[1] + "-" + bitAllocations[2]); } }
/** {@inheritDoc} */ public int getBitsPerComponent() { ColorModel cm = getEffectiveColorModel(); if (cm instanceof IndexColorModel) { IndexColorModel icm = (IndexColorModel)cm; return icm.getComponentSize(0); } else { return cm.getComponentSize(0); } }
private boolean needToCreateIndex(RenderedImage image) { SampleModel sampleModel = image.getSampleModel(); ColorModel colorModel = image.getColorModel(); return sampleModel.getNumBands() != 1 || sampleModel.getSampleSize()[0] > 8 || colorModel.getComponentSize()[0] > 8; }
private boolean needToCreateIndex(RenderedImage image) { SampleModel sampleModel = image.getSampleModel(); ColorModel colorModel = image.getColorModel(); return sampleModel.getNumBands() != 1 || sampleModel.getSampleSize()[0] > 8 || colorModel.getComponentSize()[0] > 8; }
private boolean needToCreateIndex(RenderedImage image) { SampleModel sampleModel = image.getSampleModel(); ColorModel colorModel = image.getColorModel(); return sampleModel.getNumBands() != 1 || sampleModel.getSampleSize()[0] > 8 || colorModel.getComponentSize()[0] > 8; }
private ImageParameters createTempParam() { ColorModel cm = null; SampleModel sm = null; if (srcParam.getDataType() > dstParam.getDataType()) { cm = srcParam.getColorModel(); sm = srcParam.getSampleModel(); } else { cm = dstParam.getColorModel(); sm = dstParam.getSampleModel(); } cm = new ComponentColorModel(rgbColorSpace, cm.getComponentSize(), cm.hasAlpha(), cm.isAlphaPremultiplied(), cm.getTransparency(), sm.getDataType()); return new ImageParameters(cm, sm); }
private ImageParameters createTempParam() { ColorModel cm = null; SampleModel sm = null; if (srcParam.getDataType() > dstParam.getDataType()) { cm = srcParam.getColorModel(); sm = srcParam.getSampleModel(); } else { cm = dstParam.getColorModel(); sm = dstParam.getSampleModel(); } cm = new ComponentColorModel(rgbColorSpace, cm.getComponentSize(), cm.hasAlpha(), cm.isAlphaPremultiplied(), cm.getTransparency(), sm.getDataType()); return new ImageParameters(cm, sm); }