题
我希望能够将图像保存为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对您的问题的评论)。
不隶属于 StackOverflow