转移QImage/QPixmap的色调

gir*_*fee 5 graphics qt qpixmap qimage

我想这通常是一个图形处理问题,但我想在Qt(c ++)中实现这一点.如果我有一个图像 - 让我们在透明背景上说一个圆圈 - 浅灰色,Qt中是否有任何内置功能可以将色调/饱和度转换为颜色?

我想我可以逐像素地进行,并在数学上修改rgb - 将x添加到r,g和b,以获得所需的颜色,但必须有一种比修改每个像素更好的方法.

Qt Docs中的任何内容都没有进入图像处理,只是改变了alpha和颜色.我应该查看一个开源库(最终结果可能是一个独立销售的软件)?如果是的话,有什么建议吗?或者是否有一个隐藏在Qt文档中的秘密函数可以在不需要外部库/疯狂算法的情况下完成?

Chr*_*wet 6

可能的行动方案:

  1. 将图像加载为QImage
  2. 执行a QImage QImage::convertToFormat(QImage::Format_Indexed8)以获取带有颜色表的索引图像
  3. 获取颜色表值 QRgb QImage::color ( int i ) const
  4. 使用QColor ( QRgb color )和其他QColor方法操纵颜色
  5. 改变颜色表 void QImage::setColor ( int index, QRgb colorValue )