asp.net 图片转成base64位流, 怎么转后在转成图片图片显示不全
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 图片转成base64位流, 怎么转后在转成图片图片显示不全相关的知识,希望对你有一定的参考价值。
64位码不全,图片不是很过几KB
asp.net图片转base64方法如下,在确保数据完整的情况下是不会有显示不全的情况出现。<%
Function ImagesToBase64(FileName)
Dim xml
Dim root
Dim fs
Dim FilePath
Dim objStream
Dim objXMLDoc
Dim Base64
\'\'定义变量完结
\'创建对像
FilePath=Server.MapPath(FileName)
getFileExt = Mid(FilePath, InstrRev(FilePath, ".") + 1)
Set objXMLDoc=Server.CreateObject("msxml2.FreeThreadedDOMDocument")
\'设定生成XML文档的根为 Base64Data
objXMLDoc.loadXML "<?xml version=\'1.0\'?><Base64Data />"
Set fs = Server.createObject("Scripting.FileSystemObject") \'\'服务器需要FSO组件
If fs.FileExists(FilePath) Then \'判断File文件是否存在
\'用 stream 来读取数据
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open
objStream.LoadFromFile FilePath
objXMLDoc.documentElement.dataType = "bin.base64"
objXMLDoc.documentElement.nodeTypedvalue = objStream.Read
\'数据流读取结束.得到了值 objXMLDoc
\'创建XML文件
Set xml = Server.CreateObject("msxml2.FreeThreadedDOMDocument")
xml.load objXMLDoc
If xml.ReadyState>2 Then
Set root=xml.getElementsByTagName("Base64Data")
Base64="<img src=""data:image/"&getFileExt&";base64,"&vbcrlf&root.Item(0).Text&""">"
else
Base64=""
End If
Set xml=Nothing
Set objStream=Nothing
else
Base64=""
End If
Set fs=Nothing
Set objXMLDoc=Nothing
ImagesToBase64=Base64
End Function
%> 参考技术A 1 创建image对象img
2 将img对象保存到内存流 img.save(ms)
3 调用上面内存流(ms)的方法 ms.ToArray() 转换为byte[]数组
byte[]buffer = ms.ToArray()
4 string base64Str = Convert.ToBase64String(buffer)
最后:<img alt="" src="data:image/jpg;base64,base64Str"/>
解决将网络图片转成base64格式报跨域的问题
参考技术A 此前开发了一个前端生成海报的功能。但是由于海报的图片是网络路径的图片。所以在生成海报前需要把网络图片转成base64格式。但是在转的途中。。发现,报跨域了。。。然后百度了一大堆看似靠谱的方法。
本来以为行了。然后打开控制台一看。canvas在转base64的时候跨域了。
Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported
百度了一下说给图片添加一个crossOrigin='Anonymous'就可以解决跨域。
但是加上后发现依旧是跨域。这下就头疼了。
后面偶然一次瞎操作,把crossOrigin='Anonymous'给提到了赋值src的前面。
也就是
结果竟然成功了。。。。。
附:如果服务端没有给图片设置请求头里的Access-C...A...O...字段的值为*或者你当前的域名。就算前端搞了这个跨域的玩意儿上去,依旧是拿不到图片的。
以上是关于asp.net 图片转成base64位流, 怎么转后在转成图片图片显示不全的主要内容,如果未能解决你的问题,请参考以下文章