图片转为base64字符串 - ImageToBase64
函数简介
将图片对象转换为Base64编码的字符串。此函数可以将内存中的图片数据编码为Base64格式的字符串,便于网络传输、数据存储或在不同系统间交换图片数据。转换后的Base64字符串可以直接用于HTML的img标签或其他需要Base64图片数据的场景。
接口名称
ImageToBase64
DLL调用
string ImageToBase64(long ola, long image_ptr)
参数定义:
ola
(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。image_ptr
(长整型数): 要转换的图片句柄。
示例:
// 加载图片并转换为Base64字符串
long image = LoadImage(ola, "D:\\test\\sample.png");
if (image != 0) {
// 转换为Base64
char* base64_str = ImageToBase64(ola, image);
if (base64_str != NULL) {
printf("图片转换为Base64成功\n");
printf("Base64字符串前100个字符:%.100s...\n", base64_str);
// 可以将base64_str用于其他用途
// 例如保存到文件
FILE* fp = fopen("D:\\test\\image.base64", "w");
if (fp != NULL) {
fprintf(fp, "%s", base64_str);
fclose(fp);
}
// 转换回图片测试
long new_image = Base64ToImage(ola, base64_str);
if (new_image != 0) {
printf("Base64字符串转回图片成功\n");
FreeImagePtr(ola, new_image);
}
// 释放Base64字符串内存
FreeStringPtr(base64_str);
} else {
printf("转换为Base64失败\n");
}
FreeImagePtr(ola, image);
}
// 创建图片并转换为Base64
long new_image = CreateImage(ola, 100, 100);
if (new_image != 0) {
// 绘制一些内容
DrawRectangle(ola, new_image, 10, 10, 90, 90, 0xFF0000);
// 转换为Base64
char* base64_str = ImageToBase64(ola, new_image);
if (base64_str != NULL) {
printf("新创建的图片转换为Base64成功\n");
FreeStringPtr(base64_str);
}
FreeImagePtr(ola, new_image);
}
COM调用
string ImageToBase64(long image_ptr)
参数定义:
image_ptr
(长整型数): 要转换的图片句柄。
示例:
# 加载图片并转换为Base64字符串
image = ola.LoadImage("D:\\test\\sample.png")
if image != 0:
# 转换为Base64
base64_str = ola.ImageToBase64(image)
if base64_str:
messagebox("图片转换为Base64成功")
# 显示Base64字符串的前100个字符
preview = base64_str[:100] + "..."
messagebox(f"Base64字符串预览:{preview}")
# 可以将base64_str用于其他用途
# 例如保存到文件
with open("D:\\test\\image.base64", "w") as f:
f.write(base64_str)
# 转换回图片测试
new_image = ola.Base64ToImage(base64_str)
if new_image != 0:
messagebox("Base64字符串转回图片成功")
ola.FreeImagePtr(new_image)
else:
messagebox("转换为Base64失败")
ola.FreeImagePtr(image)
# 创建图片并转换为Base64
new_image = ola.CreateImage(100, 100)
if new_image != 0:
# 绘制一些内容
ola.DrawRectangle(new_image, 10, 10, 90, 90, 0xFF0000)
# 转换为Base64
base64_str = ola.ImageToBase64(new_image)
if base64_str:
messagebox("新创建的图片转换为Base64成功")
ola.FreeImagePtr(new_image)
返回值
字符串指针:
- NULL: 转换失败
- 非NULL: 转换成功,返回Base64编码的字符串指针(DLL调用需要使用FreeStringPtr释放)
注意事项
- DLL调用返回的字符串指针需要使用 FreeStringPtr 释放内存
- Base64编码会使数据量增加约33%,大图片转换后的字符串会很长
- 如果需要将Base64字符串转回图片,可以使用 Base64ToImage 函数
- 建议在转换大图片前先进行适当压缩,以减少Base64字符串的长度
- 转换后的Base64字符串可以直接用于HTML的img标签,格式为:
<img src="data:image/png;base64,BASE64STRING">