gpt4 book ai didi

javascript - 在 JavaScript 中获取图像数据 URL?

转载 作者:行者123 更新时间:2023-11-28 03:59:33 27 4
gpt4 key购买 nike

我有一个包含一些图像的常规 HTML 页面(只是常规 <img /> HTML 标签)。我想获取他们的内容,最好是 base64 编码,而不需要重新下载图像(即它已经由浏览器加载,所以现在我想要内容)。

我很乐意通过 Greasemonkey 和 Firefox 来实现这一目标。

最佳答案

注意:仅当图像来自与页面相同的域,或者具有 crossOrigin="anonymous" 属性并且服务器支持 CORS 时,此方法才有效。它也不会为您提供原始文件,而是重新编码的版本。如果您需要结果与原始结果相同,请参阅 Kaiido's answer .

<小时/>

您需要创建一个具有正确尺寸的 Canvas 元素,并使用drawImage函数复制图像数据。然后,您可以使用 toDataURL 函数获取包含 base-64 编码图像的 data: url。请注意,图像必须完全加载,否则您将只得到一个空(黑色、透明)图像。

事情大概是这样的。我从未编写过 Greasemonkey 脚本,因此您可能需要调整代码才能在该环境中运行。

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 格式的图像在旧版本(3.5 左右)的 Firefox 上不起作用,因此如果您想支持它,则需要检查兼容性。如果不支持编码,则默认为“image/png”。

关于javascript - 在 JavaScript 中获取图像数据 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47246674/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com