我编写了一个程序,将base64字符串解码为image。我写了一个样本:
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 :(得分:0)
我已经弄明白我的代码有什么问题。当我打开图像文件时,我使用QIODevice::Text
打开模式。但是图像是二进制文件,所以我应该删除QIODevice::Text
选项。完成后,代码运行良好。