2014-08-30 143 views
0

我編寫了一個程序,將base64字符串解碼爲圖像。我寫了一個例子:解碼base64中的損壞數據以Qt中的圖像

QFile file("./image.jpg"); 

    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) 
    { 
     return; 
    } 

    QByteArray raw = file.readAll().toBase64(); 

    QImage = image; 

    image.loadFromData(QByteArray::fromBase64(raw), "JPG"); 

    image.save("output.jpg", "JPG"); 

程序的輸出是:

Corrupt JPEG data: 65 extraneous bytes before marker 0xc0 Quantization table 0x01 was not defined

我無法找到與谷歌非常有用。我只讀圖像文件,並用base64編碼,然後解碼。你能告訴我我的代碼有什麼問題嗎?

+0

對不起,我弄清楚我的代碼有什麼問題。當我打開圖像文件時,我使用'QIODevice :: Text'打開模式。我刪除它後代碼運行良好。 – stamaimer 2014-08-30 12:46:02

+0

添加您的解決方案作爲答案,並選擇它作爲答案。這是允許的,甚至是推薦的,它可能會幫助其他類似問題的人。 – RobbieE 2014-08-31 09:20:53

回答

0

我已經弄清楚我的代碼有什麼問題。當我打開圖像文件時,我使用QIODevice::Text開放模式。但圖像是一個二進制文件,所以我應該刪除QIODevice::Text選項。完成之後,代碼運行良好。