windows - QImage抖动质量

标签 windows image qt qimage

我们目前正在使用商业库在 Windows 上进行图像渲染。当显示尺寸小于图像原始尺寸的单色图像时,该库会对图像进行灰度化处理,以便仍然可以识别其中的大部分图像:

enter image description here

现在我对 Qt 4.8 应用程序进行了同样的尝试。 基本上所做的就是调用:

QImage mImage;
...
mImage.load(...);
...
painter.drawImage(paintRect, mImage, mImage.rect()); 

其中 paintRect 小于 mImage.rect()。这很好用,但输出不太令人满意:

enter image description here

我尝试了几个 renderHints(QPainter::SmoothPixmapTransform、Antialiasing、HighQualityAntialiasing)并使用

mImage = mImage.convertToFormat(QImage::Format_RGB32);

QPainter::SmoothPixmapTransform 似乎稍微改进了输出(包括在屏幕截图中)。所有其他事情似乎都没有改变。

我错过了什么吗?

如何改进缩小尺寸的图像显示?

最佳答案

有可能是在

painter.drawImage(paintRect, mImage, mImage.rect()); 

当尺寸不同时,画家只是在初始图像中插入哪个像素。这将解释第二张图片。

使用缩放手册

QImage todraw = mImage.scaled(
            paintRect.size(),
            Qt::IgnoreAspectRatio,
            Qt::SmoothTransformation);
...
painter.drawImage(paintRect, todraw, mImage.rect()); 

您仅在调整大小事件时计算图像todraw(以避免缩放每个绘制事件) 然后你将它与画家一起使用。

关于windows - QImage抖动质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21857178/

相关文章:

windows - 如何在 GetLastError() 返回 ERROR_MOD_NOT_FOUND 后获取丢失的 DLL 名称

image - Sitecore:带有预览图像的子布局

javascript - 图片库中的下一个/上一个按钮

qt - 如何从 QT 中的 RTSP 流解析 ONVIF 元数据?

c++ - 如何限制QLayout增长?

windows - 如何在远程 ApacheDS、LDAP 服务器中创建分区?

.net - 是否有任何 Robocopy 的 API 包装器?

image - Gatsby JS 中 SEO 中的条件图像

qt - 通过层次结构传递信号

c++ - 编译仅依赖于 kernel32.dll 和 user32.dll 的 C++ 程序?