最近在作一個上傳頭像而後保存顯示的功能,由於涉及到裁剪大小和尺寸比例,因此直接上傳圖片再展現的話,就會出現問題,因此就想用canvas來渲染裁剪後的圖片,而後轉化成base64格式的圖片再存儲,這樣取用的時候也比較方便。html
我寫了一個demo來展現一下怎麼把一張圖片渲染成canvas圖片,並轉化爲base64格式導出。jquery
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <canvas id='canvas'></canvas> <script src="~/Scripts/jquery-3.3.1.js"></script> <script> var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d');//返回一個用於在畫布上繪圖的環境,當前惟一的合法值是 "2d",它指定了二維繪圖,返回一個 CanvasRenderingContext2D 對象,使用它能夠繪製到 Canvas 元素中 var url = '/Content/images/demo.jpg';//圖片URL var urlNumber = 1;//要渲染的圖片數 var w = 300;//canvas的寬 var h = 300;//canvas的高 var img = new Image(); img.crossOrigin = 'Anonymous';//解決Canvas.toDataURL 圖片跨域問題 img.src = url; //渲染方法 var imgs = function () { context.drawImage(img, 0, 0, w, h); //導出 var base64Img = canvas.toDataURL('image/jpg'); console.log(base64Img); } img.onload = function () { urlNumber -= 1; if (urlNumber === 0) { imgs(); } } </script> </body> </html>
運行程序,查看控制檯記錄的base64格式圖片:canvas
若是要傳到後臺,就以字符串的形式保存就行了;取用的時候也是直接取字符串。跨域
/****************************我是可愛的分割線*************************************/url