代码之家  ›  专栏  ›  技术社区  ›  TheWaterProgrammer

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

  •  1
  • TheWaterProgrammer  · 技术社区  · 7 年前

    我正在使用 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 回复  |  直到 7 年前
        1
  •  4
  •   GrecKo    3 年前

    你不能直接从 QQuickItemGrabResult ,您必须使用 QImage::save()

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

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

    如果使用png之类的无损格式,则质量因子没有影响。您可以将其设置为 -1 (默认值),省略参数或使用将用于有损格式的因子。