And*_*y M 1 qstring qt text qpixmap qimage
我希望能够将图像作为文本保存在xml文件中,我无法找到一种有效的方法来完成它!
到目前为止我试过:
QByteArray ImageAsByteArray;
QBuffer ImageBuffer(&ImageAsByteArray);
ImageBuffer.open(QIODevice::WriteOnly);
rImage.save(&ImageBuffer, "PNG");
return QString(ImageAsByteArray.toBase64());
Run Code Online (Sandbox Code Playgroud)
尽管它正在工作,但结果是一个巨大的文件!我尝试在那里添加一些QCompress但没有太大的成功......实际上QCompress似乎没有压缩任何东西......
我想我的做法是错误的,但有人可以点赞我的道路吗?
小智 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();
Run Code Online (Sandbox Code Playgroud)
我的测试图像originalSize是1028558字节,encodedSize是1371412字节,比originalSize多33%(参见Jérôme对你的问题的评论).