我正在QT项目(5.1.1)工作。主窗口将大图像显示为QLabel对象,其中包含QPixmap(包含QImage)。我的问题很简单....有没有办法压缩图像?
更新
图像有多大? 宽度:1624像素。 高度:482 * 300像素= 144600像素(或多或少) 我们的想法是用100 Mbs或更少的内存来管理这个图像
你想要完成什么,是关于使用更少的内存?是的,我希望使用最少的必要内存,而不会损失很多质量......
图像来自哪里,是图纸还是照片?它是从网络摄像头中提取的,我们管理每个帧。
您想要无损或有损压缩吗?我认为这可能是我问题的关键。我正在搜索如何配置QImage中的压缩类型,但我没有找到它。我找到了配置图像format的参数,但它并没有改善使用记忆,而且它的质量也很差。我很想知道如何配置QImage的压缩。
最后,我想我的问题是:是否有某种方法来压缩QImage,而QLabel显示没有丢失质量?
P.D:我想实现某种类型的缓存并使用滚动条加载图像的新部分(滚动条在QLabel中自动创建)。 P.D2:我没有添加代码,因为我认为问题并不复杂......如果有人想要代码,我会添加它。 P.D3:在此处或http://programmers.stackexchange.com中发布此问题是否正确?
答案 0 :(得分:2)
我担心你必须至少加载一次大图像来做任何事情。
您可以使用scaled()func获取原始图像的缩小版本,以便在QLabel中使用。
QImage QImage::scaled(const QSize & size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const