private static BufferedImage rgbaToIndexedBufferedImage(final BufferedImage sourceBufferedImage) { final BufferedImage indexedImage = new BufferedImage( sourceBufferedImage.getWidth(), sourceBufferedImage.getHeight(), BufferedImage.TYPE_BYTE_INDEXED); final ColorModel cm = indexedImage.getColorModel(); final IndexColorModel icm = (IndexColorModel) cm; final int size = icm.getMapSize(); final byte[] reds = new byte[size]; final byte[] greens = new byte[size]; final byte[] blues = new byte[size]; icm.getReds(reds); icm.getGreens(greens); icm.getBlues(blues); final WritableRaster raster = indexedImage.getRaster(); final int pixel = raster.getSample(0, 0, 0); final IndexColorModel resultIcm = new IndexColorModel(8, size, reds, greens, blues, pixel); final BufferedImage resultIndexedImage = new BufferedImage(resultIcm, raster, sourceBufferedImage.isAlphaPremultiplied(), null); resultIndexedImage.getGraphics().drawImage(sourceBufferedImage, 0, 0, null); return resultIndexedImage; }
/** * Creates a copy of the given image, with a solid background * * @param pOriginal the original image * @param pBackground the background color * @return a new {@code BufferedImage} */ private static BufferedImage createSolid(BufferedImage pOriginal, Color pBackground) { // Create a temporary image of same dimension and type BufferedImage solid = new BufferedImage(pOriginal.getColorModel(), pOriginal.copyData(null), pOriginal.isAlphaPremultiplied(), null); Graphics2D g = solid.createGraphics(); try { // Clear in background color g.setColor(pBackground); g.setComposite(AlphaComposite.DstOver);// Paint "underneath" g.fillRect(0, 0, pOriginal.getWidth(), pOriginal.getHeight()); } finally { g.dispose(); } return solid; }
protected BufferedImage getStartImage(BufferedImage copyFrom, int width, int height) { Map<String, Object> properties = null; if (copyFrom.getPropertyNames() != null) { properties = new HashMap<String, Object>(); for (String name : copyFrom.getPropertyNames()) { properties.put(name, copyFrom.getProperty(name)); } } SampleModel sm = copyFrom.getSampleModel().createCompatibleSampleModel(width, height); WritableRaster raster = Raster.createWritableRaster(sm, null); BufferedImage image = new BufferedImage( copyFrom.getColorModel(), raster, copyFrom.isAlphaPremultiplied(), (Hashtable<?, ?>) properties); // white background Graphics2D g2D = (Graphics2D) image.getGraphics(); Color save = g2D.getColor(); g2D.setColor(Color.WHITE); g2D.fillRect(0, 0, image.getWidth(), image.getHeight()); g2D.setColor(save); return image; }
private BufferedImage getStartImage(BufferedImage copyFrom) { Dimension dim = getStartDimension(); Hashtable<String, Object> properties = null; if (copyFrom.getPropertyNames() != null) { properties = new Hashtable<String, Object>(); for (String name : copyFrom.getPropertyNames()) { properties.put(name, copyFrom.getProperty(name)); } } SampleModel sm = copyFrom.getSampleModel() .createCompatibleSampleModel((int) dim.getWidth(), (int) dim.getHeight()); WritableRaster raster = Raster.createWritableRaster(sm, null); ColorModel colorModel = copyFrom.getColorModel(); boolean alphaPremultiplied = copyFrom.isAlphaPremultiplied(); DataBuffer dataBuffer = createDataBufferFilledWithNoDataValues(raster, colorModel.getPixelSize()); raster = Raster.createWritableRaster(sm, dataBuffer, null); BufferedImage image = new BufferedImage(colorModel, raster, alphaPremultiplied, properties); if (levelInfo.getNoDataValue() == null) { Graphics2D g2D = (Graphics2D) image.getGraphics(); Color save = g2D.getColor(); g2D.setColor(backgroundColor); g2D.fillRect(0, 0, image.getWidth(), image.getHeight()); g2D.setColor(save); } return image; }
colorModel, (WritableRaster) scaledImageRaster, image.isAlphaPremultiplied(), null); return scaledImage;
static BufferedImage switchPalette(BufferedImage bi, IndexColorModel icm) { WritableRaster wr = bi.getRaster(); boolean bAlphaPremultiplied = bi.isAlphaPremultiplied(); return new BufferedImage(icm, wr, bAlphaPremultiplied, new Hashtable()); }
public static BufferedImage deepCopyImage(BufferedImage bF){ ColorModel cm = bF.getColorModel(); boolean alphaPre = bF.isAlphaPremultiplied(); WritableRaster wR = bF.copyData(null); return new BufferedImage(cm, wR, alphaPre, null); }
public ImageD(BufferedImage image) { super(image.getColorModel(), image.copyData(null), image.isAlphaPremultiplied(), null); }
@Override public Image snapshot() { ColorModel cm = img.getColorModel(); boolean isAlphaPremultiplied = img.isAlphaPremultiplied(); WritableRaster raster = img.copyData(null); BufferedImage snap = new BufferedImage(cm, raster, isAlphaPremultiplied, null); return new JavaStaticImage(ctx, snap, scale); }
@Override public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) { if (destCM == null) destCM = src.getColorModel(); WritableRaster raster = src.getRaster().createCompatibleWritableRaster(); Hashtable<String, Object> properties = new Hashtable<String, Object>(); for (String name: src.getPropertyNames()) { properties.put(name, src.getProperty(name)); } return new BufferedImage(destCM, raster, src.isAlphaPremultiplied(), properties); }
@Override public Image snapshot() { ColorModel cm = img.getColorModel(); boolean isAlphaPremultiplied = img.isAlphaPremultiplied(); WritableRaster raster = img.copyData(null); BufferedImage snap = new BufferedImage(cm, raster, isAlphaPremultiplied, null); return new JavaStaticImage(ctx, snap, scale); }
public static BufferedImage copyImage(BufferedImage src) { assert src != null; WritableRaster raster = null; try { raster = src.copyData(null); } catch (OutOfMemoryError e) { Dialogs.showOutOfMemoryDialog(e); } return new BufferedImage(src.getColorModel(), raster, src.isAlphaPremultiplied(), null); }
@Override public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) { if (destCM == null) destCM = src.getColorModel(); WritableRaster raster = src.getRaster().createCompatibleWritableRaster(); Hashtable<String, Object> properties = new Hashtable<String, Object>(); for (String name: src.getPropertyNames()) { properties.put(name, src.getProperty(name)); } return new BufferedImage(destCM, raster, src.isAlphaPremultiplied(), properties); }
private BufferedImage [] getSpecialRAWImage(String name, Color [] palette, int upscalePowerOfTwo) throws IllegalAccessException, FileLoadException, IOException{ RAWFile dat = getRAW(name); dat.setPalette(palette); BufferedImage [] segs = dat.asSegments(upscalePowerOfTwo); for(BufferedImage seg:segs){ Graphics g = seg.getGraphics(); BufferedImage scaled = new BufferedImage(seg.getColorModel(),seg.copyData(null),seg.isAlphaPremultiplied(),null); g.drawImage(scaled.getScaledInstance(seg.getWidth()-2, seg.getHeight()-2, Image.SCALE_AREA_AVERAGING), 1, 1, seg.getWidth()-2, seg.getHeight()-2, null); g.dispose(); } return segs; }
public static BufferedImage copy(BufferedImage img) { Hashtable<?,?> properties = new Hashtable<>(); for (String propertyName : img.getPropertyNames()) { properties.put(propertyName, img.getProperty(propertyName)); } return new BufferedImage(img.getColorModel(), img.copyData(null), img.isAlphaPremultiplied(), properties); }
@Override public Image snapshot() { BufferedImage bmp = ((JavaImage)image).bufferedImage(); ColorModel cm = bmp.getColorModel(); boolean isAlphaPremultiplied = bmp.isAlphaPremultiplied(); WritableRaster raster = bmp.copyData(null); BufferedImage snap = new BufferedImage(cm, raster, isAlphaPremultiplied, null); return new JavaImage(gfx, image.scale(), snap, "<canvas>"); }
@Override public Image snapshot() { BufferedImage bmp = ((JavaImage)image).bufferedImage(); ColorModel cm = bmp.getColorModel(); boolean isAlphaPremultiplied = bmp.isAlphaPremultiplied(); WritableRaster raster = bmp.copyData(null); BufferedImage snap = new BufferedImage(cm, raster, isAlphaPremultiplied, null); return new JavaImage(gfx, image.scale(), snap, "<canvas>"); }
public void fixAlpha(BufferedImage bi) { if ((!bi.getColorModel().hasAlpha()) || (!bi.isAlphaPremultiplied())) // No need to fix alpha if it isn't premultiplied... return; if (GraphicsUtil.is_INT_PACK_Data(bi.getSampleModel(), true)) fixAlpha_INT_PACK(bi.getRaster()); else fixAlpha_FALLBACK(bi.getRaster()); }
public void fixAlpha(BufferedImage bi) { if ((!bi.getColorModel().hasAlpha()) || (!bi.isAlphaPremultiplied())) // No need to fix alpha if it isn't premultiplied... return; if (GraphicsUtil.is_INT_PACK_Data(bi.getSampleModel(), true)) fixAlpha_INT_PACK(bi.getRaster()); else fixAlpha_FALLBACK(bi.getRaster()); }
public void fixAlpha(BufferedImage bi) { if ((!bi.getColorModel().hasAlpha()) || (!bi.isAlphaPremultiplied())) // No need to fix alpha if it isn't premultiplied... return; if (GraphicsUtil.is_INT_PACK_Data(bi.getSampleModel(), true)) fixAlpha_INT_PACK(bi.getRaster()); else fixAlpha_FALLBACK(bi.getRaster()); }