Вопрос по qt, qml – сохранение изображения QML

7

Как я могу сохранить QML Image в память телефона ??

также, если сохранение изображения было применимо, у меня есть этот случай, в котором мне нужно добавить текст к изображению (мы можем представить его как прозрачное изображение [которое содержит текст] и поместить его поверх второго изображения, так что, наконец, мы есть одно изображение, которое мы можем сохранить в памяти телефона)

Ваш Ответ

2   ответа
7

Image непосредственно.QDeclarativeImage имеетpixmap, setPixmap а такжеpixmapChange методы, но по какой-то причине нет объявленного свойства. Таким образом, вы не можете использовать его из qml. К сожалению, его нельзя использовать и в C ++ - это частные вызовы.

Что вы можете сделать, это нарисовать графический элемент в свой растровое изображение и сохранить его в файл.

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");
}

Зарегистрировать "захват" переменная контекста:

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)
        }
    }
}
как сделать оверлей / слияние 2QQuickItems & amp; сохранить это изображение?
спасибо дорогая, все работает :). Сейчас я ищу, как объединить 2 изображения в Qt, вы можете мне помочь? Bayan
6

Похожие вопросы