求大佬解答,怎么做。。。。。。。。。。。。。。。。。。。。。。。。。。。
5条回答 默认 最新
- zshzsh1994 2017-12-06 10:00关注
import java.awt.Color;
import java.awt.image.*;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import java.io.FileInputStream;
import javax.imageio.ImageIO;public class Test2 extends RGBImageFilter {// 抽象类RGBImageFilter是ImageFilter的子类,
public static void main(String[] args) { try { BufferedImage imageBiao = ImageIO.read(new FileInputStream("e:\\1.png")); ImageFilter imgf = new Test2(Color.WHITE.getRGB()); //白色 FilteredImageSource fis = new FilteredImageSource(imageBiao.getSource(), imgf); Image im = Toolkit.getDefaultToolkit().createImage(fis); im.flush(); BufferedImage newImage = new BufferedImage(imageBiao.getWidth(), imageBiao.getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g = newImage.createGraphics(); g.drawImage(im, 0, 0, null); g.dispose(); newImage.flush(); ImageIO.write(newImage, "png", new File("e:\\b.png")); // 把以上原图和加上图标后的图像 } catch (Exception e) { e.printStackTrace(); } } // 继承它实现图象ARGB的处理 int rgb = 0; public Test2(int rgb) {// 构造器,用来接收需要过滤图象的尺寸,以及透明度 this.canFilterIndexColorModel = true; this.rgb = rgb; } DirectColorModel dcm = (DirectColorModel) ColorModel.getRGBdefault(); public int filterRGB(int x, int y, int rgb) { int alp = dcm.getAlpha(rgb); if (dcm.getRGB(rgb) == dcm.getRGB(this.rgb)/* || alp == 0*/) {// 如果像素为白色,则让它透明 alp = 0;
// return Color.black.getRGB();//测试,透明的变成黑色
}
return alp << 24 | dcm.getRGB(rgb);// 进行标准ARGB输出以实现图象过滤
}
/*//这样不是再简单
public int filterRGB(int x, int y, int rgb) {
if ((this.rgb & 0xffffff) == (rgb & 0xffffff)) {
return 0;
}
return rgb;
}
*/
}这段代码可以把白色转换成透明,你改一下应该就能用的。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 安装svn网络有问题怎么办
- ¥15 Python爬取指定微博话题下的内容,保存为txt
- ¥15 vue2登录调用后端接口如何实现
- ¥65 永磁型步进电机PID算法
- ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
- ¥88 找成都本地经验丰富懂小程序开发的技术大咖
- ¥15 如何处理复杂数据表格的除法运算
- ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
- ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
- ¥15 latex怎么处理论文引理引用参考文献