c ++将png转换为base64

时间:2018-01-17 17:13:25

标签: c++ opencv meteor base64

我发现conver png文件到base64但它要求从文件流中读取:

ostringstream sout;
istringstream sin;

// this is the object we will use to do the base64 encoding
base64 base64_coder;



// now base64 encode the compressed data
base64_coder.encode(sin,sout);

我在opencv转换为png:

                imencode(".png", im, buf);

当我想要转换

    base64_coder.encode(buf,sout);

它问流..

我的c ++知识有限,所以任何帮助都会受到赞赏。

目的:

我需要将png图像写入meteorjs可以使用的mongodb。所以他们要求base64编码。图像。

THX

编辑:我是Cv :: Mat。 OBJ。我正在将它转换为png。 buf包括png。

2 个答案:

答案 0 :(得分:0)

我找到了:

auto base64_png = reinterpret_cast<const unsigned char*>(buf.data());
                std::string encoded_png = "data:image/jpeg;base64,"+base64_encode(base64_png,buf.size());

标题:github

它解决了我的问题

答案 1 :(得分:0)

对我有用的东西

  • https://github.com/ReneNyffenegger/cpp-base64中的.cpp和.h文件添加到了我的项目中;

    string encoded_png;
    Mat img; // Load an image here
    
    vector<uchar> buf;
    cv::imencode(".png", img, buf);
    auto base64_png = reinterpret_cast<const unsigned char*>(buf.data());
    encoded_png = "data:image/jpeg;base64," + base64_encode(base64_png, buf.size());
    

encoded_png现在包含base64字符串,可以将其解码以获取原始图像。