将图像url转换为Base64
使用图像文件,我得到一个图像的url,需要发送到一个web服务。 从那里,图像必须保存在我的系统本地。
我正在使用的代码:
var imagepath = $("#imageid").val();// from this getting the path of the selected image that var st = imagepath.replace(data:image/png or jpg; base64"/"");
如何将图像的URL转换为BASE64?
HTML
<img id=imageid src=https://www.google.dehttp://img.dovov.comsrpr/logo11w.png>
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); var dataURL = canvas.toDataURL("image/png"); return dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); } var base64 = getBase64Image(document.getElementById("imageid"));
这个方法需要完全支持的canvas元素。
-
HTMLCanvasElement.toDataURL()
的MDN引用。 - 和官方的W3C文档 。
这是你的html-
<img id="imageid" src=""> <canvas id="imgCanvas" />
JavaScript应该是 –
var can = document.getElementById("imgCanvas"); var img = document.getElementById("imageid"); var ctx = can.getContext("2d"); ctx.drawImage(img, 10, 10); var encodedBase = can.toDataURL();
'encodedBase'包含图像的Base64编码。
查看此答案: https ://stackoverflow.com/a/20285053/5065874由@HaNdTriX
基本上他实现了这个function:
function toDataUrl(url, callback) { var xhr = new XMLHttpRequest(); xhr.onload = function() { var reader = new FileReader(); reader.onloadend = function() { callback(reader.result); } reader.readAsDataURL(xhr.response); }; xhr.open('GET', url); xhr.responseType = 'blob'; xhr.send(); }
在你的情况下,你可以像这样使用它:
toDataUrl(imagepath, function(myBase64) { console.log(myBase64); // myBase64 is the base64 string });
<input id="inputFileToLoad" type="file" onchange="encodeImageFileAsURL();" /> <div id="imgTest"></div> <script type='text/javascript'> function encodeImageFileAsURL() { var filesSelected = document.getElementById("inputFileToLoad").files; if (filesSelected.length > 0) { var fileToLoad = filesSelected[0]; var fileReader = new FileReader(); fileReader.onload = function(fileLoadedEvent) { var srcData = fileLoadedEvent.target.result; // <--- data: base64 var newImage = document.createElement('img'); newImage.src = srcData; document.getElementById("imgTest").innerHTML = newImage.outerHTML; alert("Converted Base64 version is " + document.getElementById("imgTest").innerHTML); console.log("Converted Base64 version is " + document.getElementById("imgTest").innerHTML); } fileReader.readAsDataURL(fileToLoad); } } </script>