QImage:重新着色图像+ alpha +亮度

时间:2015-03-22 08:59:19

标签: c++ image qt

使用Qt 5.4.1。

给出灰色图像。它还包含alpha通道。 灰色的亮度(如HSL中)变化。 给出RGB值。 我想要做的是重新考虑图像,考虑到alpha通道(仅触摸具有alpha> 0的像素)和亮度(将亮度应用于给定的rgb颜色,其中亮度= 0不会改变颜色)。

我试图在没有亮度的情况下首先使用以下代码:

void SkinPreviewWindow::recolorCircle(QImage img, int r, int g, int b) {
    //QImage alpha = img.alphaChannel();
    for (int y = 0; y < img.height(); y++) {
        for (int x = 0; x < img.width(); x++) {
            int a = qAlpha(img.pixel(x,y));
            if (a > 0) {
                img.setPixel(x, y, QColor(r, g, b, a).rgba());
                //alpha.setPixel(x, y, a);
            }
        }
    }
    //img.setAlphaChannel(alpha);
}

如果您取消注释注释行并将img.setPixel(x, y, QColor(r, g, b, a).rgba())行更改为img.setPixel(x, y, QColor(r, g, b).rgb()),则我拥有的其他版本是相同的代码 没有工作,仍然得到一个灰色的图像。

如果这很重要,之后图像将被绘制到另一个图像,然后生成的图片将被翻译成QPixmap并应用于表单上的标签。

有一种简单的方法吗?我对图像处理不是很熟悉。另外,我做错了什么?

0 个答案:

没有答案
相关问题