将图像转换为文本

时间:2010-09-14 11:23:21

标签: qt text qimage qstring qpixmap

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

到目前为止,我试过了:

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

return QString(ImageAsByteArray.toBase64());

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

我认为我的做法是错误的,但有人可以点赞我的道路吗?

1 个答案:

答案 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对您问题的评论)。