2012-06-13 19 views
6

Come posso salvare l'immagine QML nella memoria del telefono ??salvataggio immagine QML

anche se il salvataggio dell'immagine era applicabile, ho questo caso che ho bisogno di aggiungere del testo all'immagine (possiamo immaginarlo come abbiamo un'immagine trasparente [che contiene il testo] e metterlo sopra la seconda immagine , quindi finalmente abbiamo un'immagine che possiamo salvarla nella memoria del telefono)

risposta

7

Non direttamente da Image. QDeclarativeImage ha metodi pixmap, setPixmap e pixmapChange, ma per qualche motivo non è stata dichiarata alcuna proprietà. Quindi non puoi usarlo da qml. Purtroppo non può essere usato nemmeno da C++ - è un calss privato.

Quello che puoi fare è dipingere elementi grafici sulla tua pixmap e salvarli su file.

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

Register "catturatore" variabile di contesto:

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

e utilizzarlo nella vostra QML:

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

grazie caro, funziona :). Ora cerco come unire 2 immagini in Qt, puoi aiutarmi? – Bayan

+0

come sovrapporre/unire 2 'QQuickItem's e salvarlo su un'immagine? –