2012-06-13 14 views
6

मैं QML छवि को फ़ोन मेमोरी में कैसे सहेज सकता हूं ??बचत QML छवि

अगर छवि को सहेजना भी लागू होता है, तो मेरे पास यह मामला है जिसे मुझे छवि में कुछ पाठ जोड़ने की आवश्यकता है (हम इसकी कल्पना कर सकते हैं क्योंकि हमारे पास एक पारदर्शी छवि है [जो टेक्स्ट धारण करती है] और इसे दूसरी छवि पर रखती है , इसलिए आखिरकार हमारे पास एक छवि है जिसे हम इसे फोन मेमोरी में सहेज सकते हैं)

उत्तर

7

Image से सीधे नहीं। QDeclarativeImage में pixmap, setPixmap और pixmapChange विधियां हैं, लेकिन किसी कारण से कोई संपत्ति घोषित नहीं की गई है। तो आप इसे fom qml का उपयोग नहीं कर सकते हैं। दुर्भाग्य से इसका उपयोग सी ++ से भी नहीं किया जा सकता है - यह एक निजी कैल्सएसएस है।

आप अपने पिक्समैप पर पेंट ग्राफिक्स आइटम को पेंट कर सकते हैं और इसे फ़ाइल में सहेज सकते हैं।

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) 
     } 
    } 
} 
+0

धन्यवाद प्रिय, यह काम करता है :)। अब मैं क्यूटी में 2 छवियों को मर्ज करने के बारे में खोजता हूं, क्या आप मेरी मदद कर सकते हैं? – Bayan

+0

2 'QQuickItem की ओवरले/विलय कैसे करें और इसे किसी छवि पर सहेजें? –

3
क्यूटी साथ 5.4+ आप के साथ अपने Qml से सीधे यह कर सकते हैं

: grabToImage