我想知道如何使用QPixmap并使其显示为“灰显”...基本上,删除所有颜色并降低alpha。
答案 0 :(得分:2)
你能用这样的东西设置alpha吗?
QPixmap &setAlpha(QPixmap &px, int val){
QPixmap alpha = px;
QPainter p(&alpha);
p.fillRect(alpha.rect(), QColor(val, val, val));
p.end();
px.setAlphaChannel(alpha);
return px;
}
您可能需要转换为QImage并使用convertToFormat()方便地转换为灰度。
答案 1 :(得分:2)
QGraphicsColorizeEffect
可能是未来更受欢迎的方式。
答案 2 :(得分:2)
去饱和算法(去除所有颜色)将涉及迭代每个像素并标准化RGB值。
伪代码如下所示:
foreach pixel in image.bits() {
int grayColor = 0.299f * pixel.red +
0.587f * pixel.green +
0.114f * pixel.blue ;
image.putPixel(grayColor);
}