我正在使用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?
答案 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
(默认值),省略参数或使用您将用于有损格式的因子。