我希望能够将图像保存为XML文件中的文本,并且无法设法找到有效的方法!

到目前为止,我尝试了:

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

return QString(ImageAsByteArray.toBase64());

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

我认为我以错误的方式这样做,但是有人可以启发我的道路吗?

有帮助吗?

解决方案

您是否将图像文件加载到qimage,然后从该Qimage获取字节?如果是,那么您是base64编码原始图像。在这种情况下,真的无关紧要的原始图像文件被压缩了多少。

您应该将原始图像文件(PNG或JPG)读取为二进制流和基本64编码该流。例子:

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 IS是1371412字节,比原始大小高33%(请参阅Jérôme对您的问题的评论)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top