java - 如何去除图像中的颜色

标签 java image swing image-processing transparency

我希望我的图像(缓冲图像)具有透明背景,我首先尝试使用 png,然后是 gif,然后我尝试使用 imageFilters,但我也无法一拍即合,所以现在我决定使用简单的jpeg,将背景设置为一种颜色,然后去掉该颜色,同样,我认为 imageFilters 适合这种情况,但我不知道到底如何使用它们,我想去掉的颜色是 0xff00d8 (洋红色)。

任何人都可以帮忙提供一种方法或示例吗?

最佳答案

jpeg 不支持透明度。确保您的缓冲图像也支持透明度:

BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);

TYPE_INT_ARGB 中的 A 代表 alpha,它是不透明度的度量。

您需要将像素值设置为 0x00000000 才能使其透明。

//Load the image
BufferedImage in = ImageIO.read(img);
int width = in.getWidth(), height = in.getHeight();
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = bi.createGraphics();
g.drawImage(in, 0, 0, null);
g.dispose();

//Change the color
int colorToChange = 0xff00d8;
for (int x=0;x<width;x++)
    for (int y=0;y<height;y++)
        if(bi.getRGB(x,y)==colorToChange)
            bi.setRGB(x,y,0x00FFFFFF&colorToChange);

bi.save(new File("out.png"));

关于java - 如何去除图像中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16374986/

相关文章:

java - 谷歌应用引擎 : Java or Python

java - 匹配相似单词的最佳方式?

python - 如何使用OpenCV对图像中的像素组进行分组和突出显示?

ruby-on-rails - 将图像移动到 Assets 图像路径时如何解决 ' No route matches [GET] image.png '?

java - JTableHeader 的工具提示未显示其列的宽度

java - 使用单选按钮更改 GUI 的颜色

java - 您必须加入线程以确保其计算完成

java - 使用 org.apache.poi.xssf.usermodel.XSSFWorkbook 在 java 中创建 excel 时移动 excel 中的列

java - 按下按钮后显示的图像消失

java - 为什么我的文本不打印到我的 JTextArea?