猿问

用JavaScript获取图像数据url?

用JavaScript获取图像数据url?

我有一个带有一些图像的常规HTML页面(只是普通的)<img />HTML标记)。我想得到他们的内容,base 64最好编码,不需要重新下载图像(即。它已经被浏览器加载,所以现在我想要内容)。

我很想用Greemonkey和Firefox来实现这一点。


喵喔喔
浏览 1275回答 3
3回答

墨色风雨

注:只有在图像来自与页相同的域或具有crossOrigin="anonymous"属性和服务器支持CORS。它也不会给你原始文件,而是一个重新编码的版本。如果需要结果与原始结果相同,请参见凯伊多的回答.您将需要创建一个具有正确维度的画布元素,并使用drawImage功能。然后,您可以使用toDataURL函数来获取数据:具有基-64编码图像的URL。请注意,图像必须是完全加载的,否则您将得到一个空的(黑色,透明的)映像。会是这样的。我从未编写过Grecemonkey脚本,因此您可能需要调整代码以在该环境中运行。function&nbsp;getBase64Image(img)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Create&nbsp;an&nbsp;empty&nbsp;canvas&nbsp;element &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;canvas&nbsp;=&nbsp;document.createElement("canvas"); &nbsp;&nbsp;&nbsp;&nbsp;canvas.width&nbsp;=&nbsp;img.width; &nbsp;&nbsp;&nbsp;&nbsp;canvas.height&nbsp;=&nbsp;img.height; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Copy&nbsp;the&nbsp;image&nbsp;contents&nbsp;to&nbsp;the&nbsp;canvas &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ctx&nbsp;=&nbsp;canvas.getContext("2d"); &nbsp;&nbsp;&nbsp;&nbsp;ctx.drawImage(img,&nbsp;0,&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Get&nbsp;the&nbsp;data-URL&nbsp;formatted&nbsp;image &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Firefox&nbsp;supports&nbsp;PNG&nbsp;and&nbsp;JPEG.&nbsp;You&nbsp;could&nbsp;check&nbsp;img.src&nbsp;to &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;guess&nbsp;the&nbsp;original&nbsp;format,&nbsp;but&nbsp;be&nbsp;aware&nbsp;the&nbsp;using&nbsp;"image/jpg" &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;will&nbsp;re-encode&nbsp;the&nbsp;image. &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;dataURL&nbsp;=&nbsp;canvas.toDataURL("image/png"); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;dataURL.replace(/^data:image\/(png|jpg);base64,/,&nbsp;"");}获取JPEG格式的图像在Firefox的旧版本(大约3.5)上不起作用,所以如果您想要支持它,就需要检查兼容性。如果不支持编码,则默认为“Image/png”。

MMMHUHU

该函数接受URL,然后返回图像base 64function&nbsp;getBase64FromImageUrl(url)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;img&nbsp;=&nbsp;new&nbsp;Image(); &nbsp;&nbsp;&nbsp;&nbsp;img.setAttribute('crossOrigin',&nbsp;'anonymous'); &nbsp;&nbsp;&nbsp;&nbsp;img.onload&nbsp;=&nbsp;function&nbsp;()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;canvas&nbsp;=&nbsp;document.createElement("canvas"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;canvas.width&nbsp;=this.width; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;canvas.height&nbsp;=this.height; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ctx&nbsp;=&nbsp;canvas.getContext("2d"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.drawImage(this,&nbsp;0,&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;dataURL&nbsp;=&nbsp;canvas.toDataURL("image/png"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(dataURL.replace(/^data:image\/(png|jpg);base64,/,&nbsp;"")); &nbsp;&nbsp;&nbsp;&nbsp;}; &nbsp;&nbsp;&nbsp;&nbsp;img.src&nbsp;=&nbsp;url;}就这样说吧:getBase64FromImageUrl("images/slbltxt.png")
随时随地看视频慕课网APP
我要回答