我希望能够将图像作为文本保存在xml文件中,我无法找到一种有效的方法来实现它!
到目前为止,我试过了:
QByteArray ImageAsByteArray;
QBuffer ImageBuffer(&ImageAsByteArray);
ImageBuffer.open(QIODevice::WriteOnly);
rImage.save(&ImageBuffer, "PNG");
return QString(ImageAsByteArray.toBase64());
尽管它正在运行,但结果是一个巨大的文件!我尝试在那里添加一些QCompress但没有太大成功......实际上QCompress似乎没有压缩任何东西......
我认为我的做法是错误的,但有人可以点赞我的道路吗?
答案 0 :(得分:6)
您是将图像文件加载到QImage然后从该QImage获取字节?如果是,那么您是base64编码原始图像。在这种情况下,原始图像文件被压缩的程度实际上并不重要。
您应该将原始图像文件(png或jpg)读取为二进制流,并对该流进行base64编码。例如:
QFile* file = new QFile("Image001.jpg");
file->open(QIODevice::ReadOnly);
QByteArray image = file->readAll();
int originalSize = image.length();
QString encoded = QString(image.toBase64());
int encodedSize = encoded.size();
我的测试图像originalSize
为1028558字节,encodedSize
为1371412字节,比originalSize多33%(参见Jérôme对您问题的评论)。