1

我希望能够将图像作为文本保存在 xml 文件中,但我无法找到一种有效的方法!

到目前为止,我尝试过:

QByteArray ImageAsByteArray;
QBuffer ImageBuffer(&ImageAsByteArray);
ImageBuffer.open(QIODevice::WriteOnly);
rImage.save(&ImageBuffer, "PNG"); 

return QString(ImageAsByteArray.toBase64());

尽管它正在工作,但结果是一个巨大的文件!我尝试在其中添加一些 QCompress 但没有太大成功...实际上 QCompress 似乎没有压缩任何东西...

我想我做错了,但有人可以启发我的道路吗?

4

1 回答 1

7

您是否将图像文件加载到 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 对您的问题的评论)。

于 2010-09-14T17:37:24.213 回答