如何将QML图像保存到手机存储中?
如果可以保存图像,我有一个需要向图像添加一些文本的案例(我们可以想象为拥有一个透明图像[包含文本],并将其放在第二个图像上,最终我们会得到一个可以保存到手机存储中的图像)。
并非直接从Image
。 QDeclarativeImage
具有pixmap
、setPixmap
和pixmapChange
方法,但由于某些原因未声明属性。所以您无法在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)
}
}
}
QQuickItem
并保存为图像? - TheWaterProgrammer