为了账号安全,请及时绑定邮箱和手机立即绑定

用JavaScript获取图像数据url?

用JavaScript获取图像数据url?

喵喔喔 2019-05-30 10:31:38
用JavaScript获取图像数据url?我有一个带有一些图像的常规HTML页面(只是普通的)<img />HTML标记)。我想得到他们的内容,base 64最好编码,不需要重新下载图像(即。它已经被浏览器加载,所以现在我想要内容)。我很想用Greemonkey和Firefox来实现这一点。
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

注:只有在图像来自与页相同的域或具有crossOrigin="anonymous"属性和服务器支持CORS。它也不会给你原始文件,而是一个重新编码的版本。如果需要结果与原始结果相同,请参见凯伊多的回答.


您将需要创建一个具有正确维度的画布元素,并使用drawImage功能。然后,您可以使用toDataURL函数来获取数据:具有基-64编码图像的URL。请注意,图像必须是完全加载的,否则您将得到一个空的(黑色,透明的)映像。

会是这样的。我从未编写过Grecemonkey脚本,因此您可能需要调整代码以在该环境中运行。

function getBase64Image(img) {
    // Create an empty canvas element
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;

    // Copy the image contents to the canvas
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);

    // Get the data-URL formatted image
    // Firefox supports PNG and JPEG. You could check img.src to
    // guess the original format, but be aware the using "image/jpg"
    // will re-encode the image.
    var dataURL = canvas.toDataURL("image/png");

    return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");}

获取JPEG格式的图像在Firefox的旧版本(大约3.5)上不起作用,所以如果您想要支持它,就需要检查兼容性。如果不支持编码,则默认为“Image/png”。


查看完整回答
反对 回复 2019-05-30
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

该函数接受URL,然后返回图像base 64

function getBase64FromImageUrl(url) {
    var img = new Image();

    img.setAttribute('crossOrigin', 'anonymous');

    img.onload = function () {
        var canvas = document.createElement("canvas");
        canvas.width =this.width;
        canvas.height =this.height;

        var ctx = canvas.getContext("2d");
        ctx.drawImage(this, 0, 0);

        var dataURL = canvas.toDataURL("image/png");

        alert(dataURL.replace(/^data:image\/(png|jpg);base64,/, ""));
    };

    img.src = url;}

就这样说吧:getBase64FromImageUrl("images/slbltxt.png")


查看完整回答
反对 回复 2019-05-30
  • 3 回答
  • 0 关注
  • 1286 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信