Cache数据库的M语言之把图片转成Base64

有业务需求把图片存起来,又不能让人随意看到,不能存成图片文件,就用方法转成base64位字符,可以直接显示在界面上,也可存入数据库,

/// 把图片转成base64

ClassMethod Img2Base64(path)
{
	set img = ##class(%FileBinaryStream).%New()
	set img.Filename = $g(path)	
	set byteList = img.Read(12288) 		;要为3的倍数,这样补0才不会出问题. 12288 =3*4*1024,12k
	set count=0
	while(byteList'=""){
		w ##class(%SYSTEM.Encryption).Base64Encode(byteList)
		s count=count+1
		set byteList = ""		
		set byteList = img.Read(12288)	// 读字节流,再通过系统方法把字节转成Base64字符串	
	}	
	do img.%Close()
	set img=""
	q ""
}

新建一img2basetest.csp代码如下:

<html>
<head>

<title>	img 2 base64 test </title>

</head>

<body>
<script language=cache runat=server>
	w "<img src=""data:image/gif;base64,"
	d ##class(web.Test).Img2Base64("d:snchangeback.png")
	w """/>",!
	</script></body>
</html>
访问csp界面http://localhost/xxxxxxxxxx/csp/img2basetest.csp,即可看到图片效果。


图片转成base64字符串后, 所占内存比以前还要大,3个字节变4个字节。

如果存到数据库,还是很占空间。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值