如何将QML图像保存到手机记忆库中?
如果保存图像适用,我有这种情况我需要在图像中添加一些文字(我们可以想象它,因为我们有一个透明图像[保存文本]并将其放在第二张图像上,所以最后我们有一个图像,我们可以把它保存到手机内存中)
答案 0 :(得分:7)
不是直接来自Image
。 QDeclarativeImage
有pixmap
,setPixmap
和pixmapChange
方法,但由于某种原因,没有声明属性。所以你不能使用它来获取qml。不幸的是它也不能从C ++中使用 - 它是一个私人的calsss。
您可以做的是将图形项绘制到像素图并将其保存到文件中。
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)
}
}
}
答案 1 :(得分:6)
使用Qt 5.4+,您可以直接从Qml中执行以下操作: grabToImage