用颜色有效地替换完全透明的像素

时间:2016-07-15 05:52:20

标签: java image

我想用一定的颜色替换图像中的所有完全透明像素(在我的情况下为白色),以便在图像嵌入PDF时处理子采样问题。

我的代码看起来像这样:

BufferedImage bi = new BufferedImage(bufferedImage.getWidth(),bufferedImage.getHeight(),BufferedImage.TYPE_INT_ARGB);
for (int x=0;x<bufferedImage.getWidth();x++){
    for (int y=0;y<bufferedImage.getHeight();y++){
        int rgba = bufferedImage.getRGB(x,y);
        boolean isTrans = (rgba & 0xff000000) == 0;
        if (isTrans){
            bi.setRGB(x,y, 0x00ffffff);
        } else {
            bi.setRGB(x,y,rgba | 0xff000000);
        }
    }
}

但这速度令人无法接受。我尝试了几种方法,包括使用ColorConvertOp,并尝试直接操作WriteableRaster。每次尝试都要么太慢,要么不起作用。

似乎应该有一种有效的方法来做到这一点。

我认为解决方案可能是定义一个自定义ColorModel,但我不确定如何做到这一点。有没有其他方法可以有效地做到这一点?

0 个答案:

没有答案