0

我有一个 BufferedImage 并且想将所有完全透明的像素设置为完全透明的白色(而不是透明的空白,或者源文件中可能存在的任何内容)。我当然可以使用 getRGB 和 setRGB 循环遍历整个图像,但是还有其他更快的方法吗?

4

2 回答 2

3

You can set the pixels like this:

public void setRGB(int startX,
               int startY,
               int w,
               int h,
               int[] rgbArray,
               int offset,
               int scansize)

This method sets an array of integer pixels in the default RGB color model (TYPE_INT_ARGB) and default sRGB color space, into a portion of the image data. Color conversion takes place if the default model does not match the image ColorModel. There are only 8-bits of precision for each color component in the returned data when using this method. With a specified coordinate (x, y) in the this image, the ARGB pixel can be accessed in this way:

 pixel   = rgbArray[offset + (y-startY)*scansize + (x-startX)];
于 2012-08-23T18:56:40.563 回答
1

我不能确定它是否更快,但请看一下ColorConvertOp课程。

我没有亲自使用它,但它可能是你正在寻找的。

于 2012-07-18T19:45:34.500 回答