可以使用java将PNG图片的(特定颜色)灰色处理为透明色

求大佬解答,怎么做。。。。。。。。。。。。。。。。。。。。。。。。。。。

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;
}
*/
}

这段代码可以把白色转换成透明,你改一下应该就能用的。

如果是png就好办多了,png文件格式比较git/jpg等要简单地多了。通过读取二进制字节流的数据部分,针对什么RBG值 ,修改成另外一种色即可

当然如果你想着找jdk的方法也是可以的。

已经使用Python将问题解决了

http://download.csdn.net/download/zyf1987zyf1/1284932 拿去参考吧 特定颜色的话只要加条件筛选下应该就没问题了