2009年4月20日 星期一

QImage - loadFromData

我們之前都是把圖片放到放在目錄中,等到需要時才去讀取,如此一來的優點是圖片方便改寫,當你想換一個圖片時,不需要修改程式碼,只要直接換圖片就好了。不過,其缺點就是圖片可能在傳遞的過程中,可能會遺失,或是系統不支援此圖片的格式。0

在之前的學長的程式中,我發現另一個方式,把圖片以陣列的方式儲存圖片,而用這一個方式的優點是圖片比較不會遺失,而缺點就是當你要修改圖片時,必需要動到程式碼。

在Qt的類別中QImage有一個function
bool QImage::loadFromData ( const uchar * buf, uint len, const char * format = 0 )
可以把陣列中的資料讀取成為圖片的型式顯示出來
例:

static const unsigned char image_14_data[] = {
0x00,0x00,0x04,0x00,0x78,0x9c,0x63,0x60,0x18,0x8c,0xa0,0xe1,0x3f,0x26,
0x26,0x45,0xef,0x7f,0x2c,0x98,0x18,0x33,0x70,0xe9,0x25,0xc6,0x0c,0x42,
0x7a,0x09,0x99,0x31,0xd2,0xf5,0x53,0x1a,0xfe,0x84,0xcc,0x20,0x35,0x0d,
0x91,0x9b,0xfe,0x86,0x16,0x00,0x00,0x3f,0xb7,0xb3,0x5b
};
QImage img;
img.loadFromData( image_14_data, sizeof( image_14_data ), "PNG" );


目前還不知道那一個image_14_data[]是怎麼轉換出來的,還在找資料當中(尋問ptt的高手)...
請參考Linux - xxd指令

沒有留言: