c++ - 将 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
解决方案
这对我有用: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();
}
}
推荐阅读
- java - 在 Jackson / SpringBoot 中测试自定义 JsonDeserializer
- arrays - 从数组中过滤掉空元素 - XPATH
- javascript - MAC地址节点JS - 如何解析正确的?
- javascript - 在 node.js 中将 rejectUnauthorized 与 node-fetch 一起使用
- python - FileNotFoundError 尝试使用数据集 20_newspaper 的朴素贝叶斯算法
- r - 在 R 中使用更长的枢轴来堆叠多列
- css - 制作
- 像标准一样行事
使用引导程序 4 列 - 像标准一样行事
- mongodb - 如何在 $facet 中返回输入文档
- r - 在ggplot2中,ggplot函数和first geom函数中包含的美学映射有什么区别?
- php - PhpSpreadsheet 公式未在保存的电子表格中运行