2012-06-13 12 views
6

¿Cómo puedo guardar la imagen QML en la memoria del teléfono?guardando la imagen QML

también si guardar la imagen era aplicable, tengo este caso que necesito agregar texto a la imagen (podemos imaginarlo ya que tenemos una imagen transparente [que contiene el texto] y ponerlo sobre la segunda imagen , así que finalmente tenemos una imagen que podemos guardar en la memoria del teléfono)

Respuesta

7

No de Image directamente. QDeclarativeImage tiene pixmap, setPixmap y pixmapChange métodos, pero por alguna razón no hay una propiedad declarada. Entonces no puedes usarlo desde qml. Desafortunadamente tampoco se puede usar desde C++, es un dominio privado.

Lo que puede hacer es pintar elementos gráficos en su mapa de píxeles y guardarlos en un archivo.

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

Registro "capturador" variable de contexto:

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

y utilizarlo en su QML:

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

gracias querido, funciona :). Ahora busco cómo fusionar 2 imágenes en Qt, ¿me pueden ayudar? – Bayan

+0

cómo superponer/fusionar 2 'QQuickItem's y guardarlo en una imagen? –