首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >setRGB()将像素设置为白色

setRGB()将像素设置为白色
EN

Stack Overflow用户
提问于 2014-03-08 04:41:20
回答 1查看 1.7K关注 0票数 0

我试图将BufferedImage中的所有黑色像素设置为特定的颜色,但它总是将其设置为白色,不管我输入了什么颜色。但是,如果color变量是黑色的,那么它将设置为黑色。

代码语言:javascript
运行
复制
BufferedImage spritesheet =
     ImageIO.read(Text.class.getResourceAsStream("/HUD/font.gif"));
for(int xx = 0; xx < spritesheet.getWidth(); xx++) {
     color = new Color(200, 180, 110);
     for(int yy = 0; yy < spritesheet.getHeight(); yy++) {
        if(spritesheet.getRGB(xx, yy) == new Color(0, 0, 0).getRGB()) 
          spritesheet.setRGB(xx, yy, color.getRGB());
     }
  }

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-08 05:38:52

吉姆·加里森是对的。当您加载GIF时,它的托盘中有一组有限的颜色,黑白两种颜色。当您用非黑色设置像素时,它使用托盘中最接近的颜色,并将其设置为白色。避免这种情况的一种方法是停止重复使用相同的BufferedImage进行写入,并创建一个全新的BufferedImage来保存,如下所示:

代码语言:javascript
运行
复制
   public static void main(String[] args) throws IOException
   {
      BufferedImage spritesheet =
            ImageIO.read(new FileInputStream("/tmp/GYBOD.gif"));
      BufferedImage copy = new BufferedImage(spritesheet.getWidth(), spritesheet.getHeight(), BufferedImage.TYPE_BYTE_INDEXED);
      for(int xx = 0; xx < spritesheet.getWidth(); xx++) {
         Color color = new Color(200, 180, 110);
         for(int yy = 0; yy < spritesheet.getHeight(); yy++) {
            if(spritesheet.getRGB(xx, yy) == new Color(0, 0, 0).getRGB()) {
               //spritesheet.setRGB(xx, yy, color.getRGB());
               copy.setRGB(xx, yy, color.getRGB());
            }
            else {
               copy.setRGB(xx, yy, spritesheet.getRGB(xx,yy));
            }
         }
      }

      ImageWriter writer = ImageIO.getImageWritersBySuffix("gif").next();
      writer.setOutput(ImageIO.createImageOutputStream(new FileOutputStream("/tmp/test.gif")));
      writer.write(copy);

   }
}

然后,当您保存GIF时,Java框架将查看ImageIO并使用新的颜色创建一个更广泛的托盘。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22265113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档