代码之家  ›  专栏  ›  技术社区  ›  Andy M

将图像转换为文本

  •  1
  • Andy M  · 技术社区  · 14 年前

    到目前为止我试过:

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

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

    1 回复  |  直到 14 年前
        1
  •  6
  •   user362638 user362638    14 年前

    您是否正在将映像文件加载到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