2014-08-30 57 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选项。完成之后,代码运行良好。