项目里面有些模块会图片显示功能,一般情况下我们都是将文件以jpg/png格式上传到项目中,再在代码中把img的src属性改成图片的路径就能正常显示了,但是某些情况下不需要以文件形式存放图片文件,需要将图片以字符串格式保存到数据库中要怎么办呢?
这时候可以考虑将图片转成base64字符串格式,这样就可以很方便保存跟引用了,当然文件大小尽量控制小一些,不然转成base64后长度会很长。下面介绍两种常规将图片转成base64的方法,可以定制成自己的小工具:
方法一: canvas,该方法就是通过javascript中的canvas属性将图片转成base64,主要用到了canvas中的toDataUrl方法,该方法可以将canvas转成base64,所以关键点就是先获取图片的宽高,再将图片放入canvas中,再使用toDataUrl就可以转成base64了。如果在本地引用网络图片可能会出现报错:Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported. 因为此时会产生跨域,我们在使用canvas.toDataURL时,如果DOM内存在图片资源,该资源所在的web-server是不支持跨域的,保存图片是不会成功的,所以最好每一次都加个随机数,以保证源都是最新的,不走缓存,这样每次刷新或更新图片就能正常显示了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37<html> <head> <meta charset="utf-8"> <title>通过filereader接口读取文件</title> <script type="text/javascript"> function getBase64Image(img) { var canvas = document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, img.width, img.height); var dataURL = canvas.toDataURL("image/png"); return dataURL // return dataURL.replace("data:image/png;base64,", ""); } function main() { var img = document.createElement('img'); img.src = 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3922290090,3177876335&fm=26&gp=0.jpg?v=' + Math.random(); //此处自己替换本地图片的地址 img.crossOrigin= 'anonymous' img.onload =function() { debugger var data = getBase64Image(img); var img1 = document.createElement('img'); img1.src = data; document.body.appendChild(img1); console.log(data); } } main() </script> </head> <body> </body> </html>
方法二:FileReader,该方法就是使用javascript的原生方法,通过FileReader的readAsDataURL方法就可将通过input上传的图片文件转成base64
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>通过filereader接口读取文件</title> <script type="text/javascript"> function readAsDataURL() { if(typeof FileReader=='undifined') //判断浏览器是否支持filereader { result.innerHTML="<p>抱歉,你的浏览器不支持 FileReader</p>"; return false; } var file=document.getElementById("imagefile").files[0]; if(!/image/w+/.test(file.type)) //判断获取的是否为图片文件 { alert("请确保文件为图像文件"); return false; } var reader=new FileReader(); reader.readAsDataURL(file); reader.onload=function(e) { var result=document.getElementById("result"); result.innerHTML='<img src="'+this.result+'" alt=""/>' } } </script> </head> <body> <p> <label>请选择一个文件:</label> <input type="file" id="imagefile" /> <input type="button" value="读取图像" onClick="readAsDataURL();" /> </p> <div name="result" id="result"> <!-- 这里用来显示图片结果--> </div> </body> </html>
以上两种方法可以直接将对应方法下面的代码保存成html文件,直接打开就可以使用。
原文:
javascript 图片(image)转换base64www.dsiab.com
最后
以上就是孝顺斑马最近收集整理的关于.net 保存base64 图片_javascript 图片(image)转换base64的全部内容,更多相关.net内容请搜索靠谱客的其他文章。
发表评论 取消回复