按颜色填充图像的不透明部分

法哈德

我在Libgdx中有一项任务:更改图像的颜色,例如三角形,星形,心形和其他形状。所有形状均以带有透明背景的png格式给出。

我正在使用Pixmap进行此操作,检查每个像素是否不是具有所需颜色的透明填充像素。这是代码:

      for (int y = 0; y < pixmap.getHeight(); y++) {
            for (int x = 0; x < pixmap.getWidth(); x++) {
                Color color = new Color();

                Color.rgba8888ToColor(color, pixmap.getPixel(x, y));

                if(color.r != 1 || color.b != 1 && color.g != 1){
                    pixmap.setColor(setColor);
                    pixmap.fillRectangle(x, y, 1, 1);
                }
            }
        }

还有其他方法吗?因为下面的方法工作时间太长。

Tenfour04

当然,您可以加快执行速度,因为现在对于图像中的每个像素,您都将实例化一个新的Color对象,并将这些像素分量转换为单独的浮点数。然后,GC将需要花费一些时间来清除您正在生成的所有这些Color对象。这些额外的中间步骤是不必要的。

另外,您只需要呼叫pixmap.setColor一次(尽管那是微不足道的)。您可以使用drawPixel而不是fillRectangle来更有效地绘制单个像素。

static final int R = 0xFF000000;
static final int G = 0x00FF0000;
static final int B = 0x0000FF00;

  pixmap.setColor(setColor);
  for (int y = 0; y < pixmap.getHeight(); y++) {
        for (int x = 0; x < pixmap.getWidth(); x++) {
            int pixel = pixmap.getPixel(x, y);

            if((pixel & R) != R || (pixel & B) != B && (pixel & G) != G){
                pixmap.drawPixel(x, y);
            }
        }
    }

(顺便说一句,您是要检查红色还是蓝色绿色?看起来像是奇怪的标准,除非您只想在原始颜色是纯黄色,青色或白色的情况下更改颜色。)

如果仅将图像绘制为“纹理”,则无需像这样在Pixmap上进行操作。例如,使用SpriteBatch绘制图像时,可以将源图像变白并给图像着色,这不会对性能产生影响。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按颜色填充图像的不透明部分

来自分类Dev

图像不透明

来自分类Dev

如何使填充不透明?

来自分类Dev

图像复制不透明

来自分类Dev

图像一直到背景都是透明的,但标题颜色不透明

来自分类Dev

FFmpeg填充视频不透明

来自分类Dev

UIWebView的内容背景颜色不透明

来自分类Dev

从Alpha +背景计算不透明颜色?

来自分类Dev

多种背景和颜色不透明

来自分类Dev

PyQtGraph GLScatterPlotItem:如何使颜色不透明

来自分类Dev

边框颜色不透明度

来自分类Dev

找到父背景颜色不透明

来自分类Dev

十六进制颜色时设置矢量要素填充不透明度

来自分类Dev

在Highchart.js Spider Web中设置填充颜色和不透明度的问题

来自分类Dev

图像“淡入/淡出”(不透明)

来自分类Dev

css背景图像部分宽度不透明度

来自分类Dev

创建不透明/透明的盖茨比背景图像

来自分类Dev

如何在Java中使透明图像不透明?

来自分类Dev

CSS不透明度影响兄弟图像的不透明度

来自分类Dev

如何在使html页面的其余部分变暗的同时保持悬停区域的背景颜色/不透明度?

来自分类Dev

按一定比例更改CSS颜色图案的所有不透明度值

来自分类Dev

Swift-如何填充路径(不透明路径)

来自分类Dev

CSS不改变SVG填充不透明度

来自分类Dev

Safari 不尊重 @Keyframes 不透明度/填充

来自分类Dev

QML矩形不透明度仅颜色

来自分类Dev

不透明之前加载CSS rgba背景颜色

来自分类Dev

更改预定义颜色的不透明度?

来自分类Dev

CSS过渡颜色的不透明度

来自分类Dev

颜色相同但不透明的对象