使用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并应用于表单上的标签。
有一种简单的方法吗?我对图像处理不是很熟悉。另外,我做错了什么?