压缩QImage或QPixmap

3
我在一个QT项目(5.1.1)中工作。主窗口显示一个包含QPixmap的QLabel对象,它包含一个QImage作为图像。我的问题很简单...是否有某种方法可以压缩图像?
更新: 这个图像有多大? 宽度:1624像素。 高度:482*300像素=144600像素(左右) 我们的想法是用100MB或更少的内存来处理这个图像。
你想要实现什么目标,是使用更少的内存吗?是的,我想使用最少必要的内存而不失去很多质量...
图片来源于哪里,是绘画还是照片?它从网络摄像头中提取出来,并且我们管理每帧。
你想要无损压缩还是有损压缩?我认为这可能是我的问题所在。我正在寻找如何配置QImage中的压缩类型,但我没有找到。我找到了一些配置图像格式 format 的参数,但它并没有改善内存使用情况,并且失去了相当多的质量。我感兴趣的是知道如何配置QImage的压缩。
最后,我的问题是:有没有一种方法可以压缩QImage并在不失去质量的情况下显示在QLabel中?
附注:我考虑实现某种类型的缓存,并使用滚动条加载图像的新部分(滚动条会自动在QLabel中创建)。 附注2:我没有添加代码,因为我认为这个问题不复杂...如果有人想要代码,我会添加它。 附注3:在这里发布这个问题还是在http://programmers.stackexchange.com

3
这张图片有多大?您想要实现什么目标,是为了使用更少的内存吗?这张图片是从哪里来的,是一幅画还是一张照片?您想使用无损压缩还是有损压缩? - pentadecagon
我认为这是不可能的,除非你自己进行基于扫描线的渲染,而不使用QLabel。 - László Papp
我认为不太可能......我认为QT可以将任何类型的图像(jpg,png,gif ...)解压缩为RGB(255,255,255),以便在QLabel中绘制它.....也许您可以更改格式(ARGB-> RGB或使用24位-> 16位),但会失去质量.....我会再搜索一下,但不可能不失去它。 - carlos.baez
1个回答

3

很抱歉,您必须至少加载一次大图像才能对其进行任何操作。

您可以使用scaled()函数获得原始图像的缩小版本,以在QLabel中使用。

QImage QImage::scaled(const QSize & size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const

Link to docs.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接