/** * All pixels that have the specified color are rendered transparent. * * @param img * the img * @param color * the color * @return the image */ public static Image applyAlphaChannel(final Image img, final Color color) { if (color == null || img == null) { return img; } final ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public final int markerRGB = color.getRGB() | 0xFF000000; @Override public final int filterRGB(final int x, final int y, final int rgb) { if ((rgb | 0xFF000000) == this.markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; final ImageProducer ip = new FilteredImageSource(img.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
public BufferedImage getGrayscaledImage(BufferedImage coloredImage) { ImageFilter filter = new ImageFilter(){ public final int filterRGB(int x, int y, int rgb) { //TODO - optimization? Bit shifts, not this shits Color currentColor = new Color(rgb); if(currentColor.getRed() < 2 && currentColor.getGreen() < 2 && currentColor.getBlue() < 2) { return new Color(rgb).darker().getRGB(); } return Color.WHITE.getRGB(); } }; ImageProducer producer = new FilteredImageSource(coloredImage.getSource(), filter); Image image = Toolkit.getDefaultToolkit().createImage(producer); return toBufferedImage(image); }
/** * {@inheritDoc} * * @since 1.6 */ public Icon getDisabledIcon(JComponent component, Icon icon) { // if the component has a HI_RES_DISABLED_ICON_CLIENT_KEY // client property set to Boolean.TRUE, then use the new // hi res algorithm for creating the disabled icon (used // in particular by the WindowsFileChooserUI class) if (icon != null && component != null && Boolean.TRUE.equals(component.getClientProperty(HI_RES_DISABLED_ICON_CLIENT_KEY)) && icon.getIconWidth() > 0 && icon.getIconHeight() > 0) { BufferedImage img = new BufferedImage(icon.getIconWidth(), icon.getIconWidth(), BufferedImage.TYPE_INT_ARGB); icon.paintIcon(component, img.getGraphics(), 0, 0); ImageFilter filter = new RGBGrayFilter(); ImageProducer producer = new FilteredImageSource(img.getSource(), filter); Image resultImage = component.createImage(producer); return new ImageIconUIResource(resultImage); } return super.getDisabledIcon(component, icon); }
public static Image makeColorTransparent(Image im, final Color color) { //(C) //Copiado da internet: 13/02/2011 - http://www.rgagnon.com/javadetails/java-0265.html e http://www.coderanch.com/t/331731/GUI/java/Resize-ImageIcon // ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public int markerRGB = color.getRGB() | 0xFF000000; @Override public final int filterRGB(int x, int y, int rgb) { if ((rgb | 0xFF000000) == markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
public static BufferedImage makeColorTransparent(BufferedImage im, final Color color) { ImageFilter filter = new RGBImageFilter() { public int markerRGB = color.getRGB() | 0xFF000000; public final int filterRGB(int x, int y, int rgb) { if ((rgb | 0xFF000000) == markerRGB) { return 0x00FFFFFF & rgb; } else { return rgb; } } }; return imageToBufferedImage( Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(im.getSource(), filter))); }
/** * 图像切割(指定切片的宽度和高度) * @param bi 原图像 * @param x 裁剪原图像起点坐标X * @param y 裁剪原图像起点坐标Y * @param width 目标切片宽度 * @param height 目标切片高度 * @return */ public static BufferedImage cut(BufferedImage bi,int x, int y, int width, int height) { BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = tag.createGraphics(); tag = g2.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT); g2.dispose(); g2 = tag.createGraphics(); int srcWidth = bi.getHeight(); // 源图宽度 int srcHeight = bi.getWidth(); // 源图高度 if (srcWidth > 0 && srcHeight > 0) { ImageFilter cropFilter = new CropImageFilter(x, y, width, height); Image img = Toolkit.getDefaultToolkit().createImage( new FilteredImageSource(bi.getSource(),cropFilter)); g2.drawImage(img, 0, 0, width, height, null); // 绘制切割后的图 g2.dispose(); } return tag; }
/** * 图像切割(按指定起点坐标和宽高切割) * @param srcImg 源图像地址 * @param outImg 切片后的图像地址 * @param x 目标切片起点坐标X * @param y 目标切片起点坐标Y * @param width 目标切片宽度 * @param height 目标切片高度 * @param imageType 图片类型 */ public static void cut(File srcImg, File outImg, int x, int y, int width, int height,String imageType) throws Exception{ //读取源图像 BufferedImage bi = ImageIO.read(srcImg); int srcWidth = bi.getHeight();//源图宽度 int srcHeight = bi.getWidth();//源图高度 if (srcWidth > 0 && srcHeight > 0) { Image image = bi.getScaledInstance(srcWidth, srcHeight,Image.SCALE_DEFAULT); //四个参数分别为图像起点坐标和宽高 //即:CropImageFilter(int x,int y,int width,int height) ImageFilter cropFilter = new CropImageFilter(x, y, width,height); Image img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(image.getSource(), cropFilter)); BufferedImage tag = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB); Graphics g = tag.getGraphics(); g.drawImage(img, 0, 0, width, height, null);//绘制切割后的图 g.dispose(); //输出为文件 ImageIO.write(tag, imageType, outImg); } }
@Override public void paint(Graphics g){ super.paint(g); // Have the extending class draw on an image so that it can be resized as needed Image bufferImage = createImage(DRAW_WIDTH, DRAW_HEIGHT); // Give control to visualization to draw on buffer paintVisualization((Graphics2D)bufferImage.getGraphics()); int width = getWidth(); int height = getHeight(); // Scale and resize the image ReplicateScaleFilter scale = new ReplicateScaleFilter(width, height); FilteredImageSource fis = new FilteredImageSource(bufferImage.getSource(), scale); Image croppedImage = createImage(fis); g.drawImage(croppedImage, 0, 0, null); Toolkit.getDefaultToolkit().sync(); }
public static Image makeColorTransparent(final BufferedImage im, final Color color) { final ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public int markerRGB = color.getRGB() | 0xFFFFFFFF; public final int filterRGB(final int x, final int y, final int rgb) { if ((rgb | 0xFF000000) == markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; final ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
/** * * @param im * @param color * @return */ public static Image setTransparentColor(BufferedImage im, final Color color) { ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public int markerRGB = color.getRGB() | 0xFF000000; public final int filterRGB(int x, int y, int rgb) { if ((rgb | 0xFF000000) == markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
public static Image makeColorTransparent(BufferedImage im, final Color color) { ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque @Override public int filterRGB(int x, int y, int rgb) { int markerRGB = color.getRGB() | 0xFF000000; if ((rgb | 0xFF000000) == markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
public static BufferedImage makeColorTransparent(BufferedImage im, final Color color) { RGBImageFilter filter = new RGBImageFilter() { public int markerRGB = color.getRGB() | 0xFF000000; public final int filterRGB(int x, int y, int rgb) { if ((rgb | 0xFF000000) == markerRGB) { return 0x00FFFFFF & rgb; } else { return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); Image image = Toolkit.getDefaultToolkit().createImage(ip); BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = bufferedImage.createGraphics(); g2.drawImage(image, 0, 0, null); g2.dispose(); return bufferedImage; }
private Image transformColorToTransparency(BufferedImage image, Color color) { ImageFilter filter = new RGBImageFilter() { public final int filterRGB(int x, int y, int rgb) { if (rgb == color.getRGB()) { return new Color(0, 0, 0, 0).getRGB(); } else { return rgb; } } }; ImageProducer ip = new FilteredImageSource(image.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
/** * Make a color of a image transparent * * @param im The image * @param color The color * @return Result image */ public static Image makeColorTransparent(BufferedImage im, final Color color) { ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public int markerRGB = color.getRGB() | 0xFF000000; @Override public final int filterRGB(int x, int y, int rgb) { if ((rgb | 0xFF000000) == markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
public static Image makeColorTransparent(Image im, final Color color) { ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public int markerRGB = color.getRGB() | 0xFF000000; public final int filterRGB(int x, int y, int rgb) { if ((rgb | 0xFF000000) == markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
public static Image makeColorTransparent(Image im, final Color color, final int alpha) { final ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public int markerRGB = color.getRGB() | 0xFF000000; public final int filterRGB(int x, int y, int rgb) { if ( ( rgb | 0xFF000000 ) == markerRGB ) { // Mark the alpha bits as zero - transparent return (0x00FFFFFF | (alpha << 24)) & rgb; } else { // nothing to do return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
public static BufferedImage createThumbnail(BufferedImage image, int maxWidth, int maxHeight) { if (image == null) { return null; } final double widthRate = (double) maxWidth / image.getWidth(); final double heightRate = (double) maxHeight / image.getHeight(); double rate = 1; if (widthRate > heightRate) { rate = heightRate; } else { rate = widthRate; } int type = image.getType(); if (type == BufferedImage.TYPE_CUSTOM) { type = BufferedImage.TYPE_INT_ARGB; } final int w = (int) (image.getWidth() * rate); final int h = (int) (image.getHeight() * rate); final Image newImage = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(image.getSource(), new AreaAveragingScaleFilter(w, h))); return imageToBufferedImage(newImage); }
/** * * Credits go to http://stackoverflow.com/a/665483 and * http://www.logikdev.com/2011/10/05/make-image-backgrounds-transparent-with-tolerance/ * * @param im * @param colorToMakeTransparent * @param tolerance * * @return */ public static Image makeColorTransparent(final BufferedImage im, final Color colorToMakeTransparent, final int tolerance) { final ImageFilter transparencyfilter = new RGBImageFilter() { @Override public int filterRGB(int x, int y, int rgb) { final Color filterColor = new Color(rgb); if(colorsAreSimilar(filterColor, colorToMakeTransparent, tolerance)) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // Nothing to do return rgb; } } }; final ImageProducer ip = new FilteredImageSource(im.getSource(), transparencyfilter); return Toolkit.getDefaultToolkit().createImage(ip); }
@Test public void toBufferedImageCanConvertFilteredImage() { Image image = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource( new BufferedImage( TEST_IMAGE_WIDTH, TEST_IMAGE_HEIGHT, BufferedImage.TYPE_INT_RGB).getSource(), new RGBImageFilter() { @Override public int filterRGB(int x, int y, int rgb) { return rgb & 0xff; } } )); BufferedImage result = GraphicsUtils.toBufferedImage(image); assertBufferedImageEquals(image, result); }
/** * * * @param icon * @return */ protected javafx.scene.image.Image getGreyscaleIcon(Icon icon) { javafx.scene.image.Image fxImage = null; try { BufferedImage bf = ImageIO.read(this.getClass().getResource(icon.getFileName())); ImageFilter filter = new GrayFilter(true, 70); ImageProducer producer = new FilteredImageSource(bf.getSource(), filter); Image mage = Toolkit.getDefaultToolkit().createImage(producer); fxImage = createImage(mage); } catch (Exception e) { // TODO: logging e.printStackTrace(); } return fxImage; }
/** * Make provided image transparent wherever color matches the provided * color. * * @param im * BufferedImage whose color will be made transparent. * @param color * Color in provided image which will be made transparent. * @return Image with transparency applied. */ public static Image makeColorTransparent(final BufferedImage im, final Color color) { final ImageFilter filter = new RGBImageFilter() { // the color we are looking for (white)... Alpha bits are set to // opaque public int markerRGB = color.getRGB() | 0xFFFFFFFF; public final int filterRGB(final int x, final int y, final int rgb) { if ((rgb | 0xFF000000) == markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; final ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
/** * Image clip. * * @param g * the g * @param ci * the ci */ private void imageClip(Graphics2D g, CanvasInfo ci) { URL u; try { u = new URL(ci.getImage().getSrc()); URLConnection con = u.openConnection(); con.setRequestProperty("User-Agent", UserAgentContext.DEFAULT_USER_AGENT); Image img = ImageIO.read(con.getInputStream()); img = createImage(new FilteredImageSource(img.getSource(), new CropImageFilter(ci.getSx(), ci.getSy(), ci.getSw(), ci.getSh()))); g.clip(new Rectangle2D.Float(ci.getDx(), ci.getDy(), ci.getDw(), ci.getDh())); g.drawImage(img, ci.getDx(), ci.getDy(), ci.getDw(), ci.getDh(), this); } catch (Exception e) { logger.error(e.getLocalizedMessage()); } }
public static Image makeTransparentWhite(BufferedImage im, final Color color){ ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public int markerRGB = 0x00FFFFFF; public final int filterRGB(int x, int y, int rgb) { if ((rgb & 0x00FFFFFF) == markerRGB) { // Mark the alpha bits as zero - transparent return color.getRGB();// & 0xFFFFFFFF; } else { // nothing to do return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
public static Image makeColorTransparent(BufferedImage im, final Color color) { ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public int markerRGB = color.getRGB() | 0xFF000000; public final int filterRGB(int x, int y, int rgb) { if ((rgb | 0xFF000000) == markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); }
/** * Make a color of the image transparent. * * @param bufferedImageToProcess the image to extract the color from. * @param colorToMakeTransparent the color to make transparent. * @return the new image. */ public static BufferedImage makeColorTransparent( BufferedImage bufferedImageToProcess, final Color colorToMakeTransparent ) { ImageFilter filter = new RGBImageFilter(){ public int markerRGB = colorToMakeTransparent.getRGB() | 0xFF000000; public final int filterRGB( int x, int y, int rgb ) { if ((rgb | 0xFF000000) == markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { return rgb; } } }; ImageProducer ip = new FilteredImageSource(bufferedImageToProcess.getSource(), filter); Image image = Toolkit.getDefaultToolkit().createImage(ip); BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = bufferedImage.createGraphics(); g2.drawImage(image, 0, 0, null); g2.dispose(); return bufferedImage; }
private BufferedImage filterWhiteToTransparent(Image img) { ImageFilter filter = new RGBImageFilter() { @Override public int filterRGB(int x, int y, int rgb) { return (rgb & 0x00FFFFFF) == 0x00FFFFFF ? 0x00FFFFFF : rgb; } }; Image transparentImage = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(img.getSource(), filter)); BufferedImage canvas = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D)canvas.getGraphics(); g.drawImage(transparentImage, 0, 0, null); g.dispose(); return canvas; }
protected InputStream createTransparentStream(String fileName, String transparencyFileName) { try { InputStream is = getClass().getResourceAsStream(fileName); BufferedImage source = ImageIO.read(is); InputStream tis = getClass().getResourceAsStream(transparencyFileName); BufferedImage transparency = ImageIO.read(tis); ImageProducer ip = new FilteredImageSource(source.getSource(), new TransparencyImageFilter(transparency)); Image image = Toolkit.getDefaultToolkit().createImage(ip); BufferedImage im = imageToBufferedImage(image, image.getWidth(null), image.getHeight(null)); ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(im, "png", os); InputStream fis = new ByteArrayInputStream(os.toByteArray()); return fis; } catch (IOException io) { throw new IllegalStateException(io); } }