我想更改图像上所有黑色像素的alpha值,然后用这个来解决一些麻烦。那里的解决方案对我不起作用。我加载一个jpg然后使用QImage :: Format_ARGB32
转换图像qDebug() << "OUT IMAGE FORMAT HAS ALPHA CHANNEL " << outImage.hasAlphaChannel();
以上显示为真。然后我尝试:
for (int y = 0; y < outImage.height(); y++) {
for (int x = 0; x < outImage.width(); x++) {
QColor c = outImage.pixel(x, y);
outImage.setPixel(x,y, (uint) qRgba((int) c.red(), (int) c.green(), (int) c.blue(), 0)) ;
}
}
mainIm->setPixmap(QPixmap::fromImage(outImage));
以上没有任何反应。如果我使用:
outImage.setPixel(x,y, (uint) qRgba(255,255,255,255));
我看到一个完美的纯白色方块取代了图像。正如所料。
如果我使用:
outImage.setPixel(x,y, (uint) qRgba(255,255,255,100));
我看到原始图像的透明白色方块为不透明度100;
如果我使用:
outImage.setPixel(x,y, (uint) qRgba(0, 0, 0, 0)) ;
什么都没发生。
我已经根据SO和QT论坛上的解决方案尝试了很多变化,我现在很痛,所以我需要寻求帮助:-(我期望与scanline结合使用,但不太重要尊重速度。
所有帮助表示赞赏。
感谢。