Qt:以预期的压缩格式保存图像

时间:2017-07-19 13:45:35

标签: qt qml png jpeg image-compression

我正在使用Qt并从QML UI项目中保存图像文件。以下是我的工作

auto screenshot = quick_item->grabToImage();
screenshot->saveToFile("/somepath/filename.jpeg");
// OR sometimes use like png like
screenshot->saveToFile("/somepath/filename.png");

这在所有平台上都非常有效。我打开文件,图像按预期保存。

现在我的问题是:
我刚刚提到.jpeg作为文件扩展名,同时将文件名作为参数提供给saveToFile。这是有效的,但我是否需要使用QImageWriter来确保图片实际上以jpeg / png格式压缩?

当像jpeg这样的有损压缩时会发生什么? 如果我想在android中如何控制有损压缩我可以image.compress(CompressFormat.JPEG, 80, stream)其中80是percentage of quality for Compress

1 个答案:

答案 0 :(得分:3)

您无法直接从QQuickItemGrabResult执行此操作,您必须使用QImage::save()

auto screenshot = quick_item->grabToImage();
auto image = screenshot->image();
image.save("/somepath/filename.jpeg", nullptr, 80);

save的第二个参数是格式,但可以保留为null,然后根据文件扩展名进行猜测,第三个是压缩质量。

如果使用像png这样的无损格式,则品质因数无效。您可以将其设置为-1(默认值),省略参数或使用您将用于有损格式的因子。