Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
qt中的图像压缩_Qt_Image Compression_Qpixmap - Fatal编程技术网

qt中的图像压缩

qt中的图像压缩,qt,image-compression,qpixmap,Qt,Image Compression,Qpixmap,我已经创建了一个qt项目,可以拍摄桌面的屏幕截图并对其进行压缩。就我拍摄的屏幕截图和缩放而言,原始屏幕截图的大小约为230kb,而缩放到60kb。我的问题是,我需要将保存的jpg缩小到5-10kb左右,而不会降低图像的清晰度。我已经搜索过了对于Qt中的库和加载项,但找不到任何可以给出可能结果的库和加载项 是否有任何算法、示例或压缩技术可以在不降低清晰度的情况下大幅减小大小? 操作系统:Ubuntu 14.04, qt-5.2.1 。以下是我迄今为止所做的代码: int widthToScale

我已经创建了一个qt项目,可以拍摄桌面的屏幕截图并对其进行压缩。就我拍摄的屏幕截图和缩放而言,原始屏幕截图的大小约为230kb,而缩放到60kb。我的问题是,我需要将保存的jpg缩小到5-10kb左右,而不会降低图像的清晰度。我已经搜索过了对于Qt中的库和加载项,但找不到任何可以给出可能结果的库和加载项 是否有任何算法、示例或压缩技术可以在不降低清晰度的情况下大幅减小大小? 操作系统:Ubuntu 14.04, qt-5.2.1 。以下是我迄今为止所做的代码:

 int widthToScale= (QApplication::desktop()->screenGeometry().width()*60)/100;
int heightToScale=(QApplication::desktop()->screenGeometry().width()*60)/100;

QPixmap p=QPixmap::grabWindow(QApplication::desktop()->winId(),0,0,
                              QApplication::desktop()->screenGeometry().width(),
                              QApplication::desktop()->screenGeometry().height()).scaled(widthToScale,heightToScale,Qt::KeepAspectRatio,Qt::SmoothTransformation);

p.save(localpath,0,65);

你唯一能做的就是测试压缩级别。在某些情况下,格式也可能有所帮助。另一个想法是将颜色数从24/32位减少到16位甚至8位。非常感谢您的建议。我对qt是新手,在这种情况下,如何将颜色数从24/32位减少到16位甚至8位。使用
QPixmap:
QPixmap>转换为
QImage
:​toImage()
然后将
QImage::convertToFormat
与适当的
QImage::Format
一起使用
QImage
还具有
save
成员为
QPixmap
。我已经厌倦了你建议的解决方案。即使我尝试了它,我也会将图像缩小为60kb,因为我使用了QImage::Format_RGB16,Qt::AutoColor进行格式转换。但是我需要转换为至少10kb。我不能再帮你了。您需要进行实验,在某些情况下,PNG可能会做得更好,但这取决于图像的细节。尽量降低质量。