QML画像を電話のメモリに保存するにはどうすればよいですか?
また、画像の保存が該当する場合は、画像にテキストを追加する必要がある場合があります([テキストを保持する]透明な画像があり、2番目の画像の上に置くと想像できます。最後に電話のメモリに保存できる画像が1つあります)
Image
直接からではありません。、およびメソッドQDeclarativeImage
がありますが、何らかの理由でプロパティが宣言されていません。したがって、qmlからは使用できません。残念ながら、C++からも使用できません。これはプライベートな計算です。pixmap
setPixmap
pixmapChange
できることは、グラフィックアイテムをピックスマップにペイントしてファイルに保存することです。
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 5.4+を使用すると、次のコマンドを使用してQmlから直接実行できます 。grabToImage