您的位置:首页 > 数据库

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

2015-10-13 11:53 501 查看
有业务需求把图片存起来,又不能让人随意看到,不能存成图片文件,就用方法转成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个字节。

如果存到数据库,还是很占空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: