2011-07-19 14 views
5

qml में, मैं सर्वर से कुछ जानकारी प्राप्त करने के लिए xml फ़ाइल का उपयोग कर रहा हूं। इस एक्सएमएल फ़ाइल में < छवि> iVBORw0KGgoAAAANSUhEUgAAA2AAAALKCAYAAABUYjK ........ </image> के रूप में एक फ़ील्ड है। मैं अन्य फ़ील्ड के लिए XmlListModel और ListView का उपयोग कर रहा हूं लेकिन मैं इस कोड को पीएनजी छवि में कैसे परिवर्तित कर सकता हूं।मैं qml में बाइनरी कोड को पीएनजी छवि में कैसे परिवर्तित कर सकता हूं?

उत्तर

11

मैं अपने आप को कोशिश नहीं की है, लेकिन QML डेटा URI योजना (का समर्थन करता है कि http://en.wikipedia.org/wiki/Data_URI_scheme),

Image { 
    source: "data:image/png;base64," + model.imageData 
} 
+0

मैंने कोशिश की, यह काम करता है। यह सबसे अच्छा और सबसे छोटा समाधान हो सकता है! – hiddenbit

+0

आपको बहुत धन्यवाद, यह महान काम और वास्तव में सरल है –

0

मैं एक कस्टम QDeclarativeImageProvider लागू करता हूं, जो एन्कोड किए गए डेटा से एक छवि बनाता है। तो फिर आप अपने प्रतिनिधि में कुछ इस तरह कर सकते हैं:

// ... 

Image { 
    source: "image://encodedimage/" + model.imageData 
} 

// ... 

this example पर एक नजर डालें, तो यह आपके कार्यान्वयन के लिए एक प्रारंभिक बिंदु हो सकता है।

छवि बेस 64 एन्कोड किया गया है, तो आप उस तरह एक छवि (परीक्षण नहीं) बना सकते हैं:

QByteArray ba = QByteArray::fromBase64(imageDataString.toAscii()); 
QImage image = QImage::fromData(ba, "PNG");