保存 QML 图像

9

如何将QML图像保存到手机存储中?

如果可以保存图像,我有一个需要向图像添加一些文本的案例(我们可以想象为拥有一个透明图像[包含文本],并将其放在第二个图像上,最终我们会得到一个可以保存到手机存储中的图像)。

2个回答

7

使用Qt 5.4+,您可以直接从Qml中使用grabToImage功能:


7

并非直接从ImageQDeclarativeImage具有pixmapsetPixmappixmapChange方法,但由于某些原因未声明属性。所以您无法在QML中使用它。不幸的是,它也不能从C++中使用 - 这是一个私有类。

您可以将图形项绘制到pixmap上并将其保存到文件。

class Capturer : public QObject
{
    Q_OBJECT
public:
    explicit Capturer(QObject *parent = 0);
    Q_INVOKABLE void save(QDeclarativeItem *obj);
};

void Capturer::save(QDeclarativeItem *item)
{
    QPixmap pix(item->width(), item->height());
    QPainter painter(&pix);
    QStyleOptionGraphicsItem option;
    item->paint(&painter, &option, NULL);
    pix.save("/path/to/output.png");
}

注册“capturer”上下文变量:

int main()
{
    // ...
    Capturer capturer;
    QmlApplicationViewer viewer;
    viewer.rootContext()->setContextProperty("capturer", &capturer);
    // ...
}

并在您的QML中使用:

Rectangle {
    // ...
    Image {
        id: img
        source: "/path/to/your/source"
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            capturer.save(img)
        }
    }
}

谢谢亲爱的,它有效了 :)。现在我正在寻找如何在Qt中合并2个图像,你能帮我吗? - Bayan
如何叠加/合并两个 QQuickItem 并保存为图像? - TheWaterProgrammer

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