首页 > 解决方案 > 将 image.jpg 转换为 Base64

问题描述

我工作的公司要求我找到一种将图像转换为 Base64 的方法。基本上,有一台相机会以 JPG 格式拍照,我需要将 JPG 图片转换为 Base64 格式,以便我可以通过 PLC 程序发送数据并在将成为 Web 应用程序的应用程序端重建它。

然后我将不得不这样做:

document.getElementById("ImageLoad").src = "data:image/png;base64," + Bytes;

在Javascript中做Jquery。

我试过使用 ifstream 和 ios::in | ios::binary 只是读取文件并输出结果,但它不起作用。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
    string line;
    ifstream input("test.jpg", ios::in | ios::binary);
    ofstream output("text.txt");
    if (input.is_open()) {
        while (getline(input,line)) {
            output << line;
        }
        input.close();
    }
}

我期待如下输出:

/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBA

但我得到一个长字符串,如下所示:

}!× ÙÝÜ÷åXŠmŒš@Õä ‡6gxD1;*wïµ¼4 ÒÑôÿ ¿OÑú\x0¥ˆ‘ÀÃõûóC

标签: c++base64

解决方案


这对我有用:https ://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp

我不敢相信 C++ 在标准库中没有 base64 功能!

#include <fstream>
#include <string>
#include "base64.h"

using namespace std;

int main()
{
    string line;

    ifstream input("test.jpg", ios::in | ios::binary);

    ofstream output("text.txt");

    if (input.is_open()) {

        while (getline(input, line)) {

            string encoded = base64_encode(reinterpret_cast<const unsigned char*>(line.c_str()), line.length());

            output << encoded;
        }

        input.close();
    }
}

推荐阅读