我想用一定的颜色替换图像中的所有完全透明像素(在我的情况下为白色),以便在图像嵌入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,但我不确定如何做到这一点。有没有其他方法可以有效地做到这一点?