求大佬解答,怎么做。。。。。。。。。。。。。。。。。。。。。。。。。。。
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 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号
- ¥15 基于单片机的靶位控制系统
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 下图接收小电路,谁知道原理
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度