javascript - 如何在chrome或firefox中获取图片数据或图片在网页上的缓存路径?

标签 javascript google-chrome-extension firefox-addon

我正在制作一个插件(附加组件)来在任何页面上上传图片。 只能获取图片的url,想获取图片数据或者图片本地缓存。

在 chrome 或 firefox 上通过 javascript。

最佳答案

我是通过 Canvas 在我的扩展程序中完成的。

我创建了两个函数。首先使用“toDataURL()”方法从 Canvas 获取图像数据(返回当前 Canvas 的内容作为图像,您可以将其用作另一个 Canvas 或 HTML 元素(如 img)的来源),然后使用此数据获取 BLOB 对象。

function getImageDataURL(url) {
var data, canvas, ctx, blob;
var img = new Image();

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

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

    try {
        data = canvas.toDataURL();
        blob = dataURIToBlob(data);
    } catch(e) {
        // Handle errors here
        alert(e);
    }
};

img.src = url;
};

function dataURIToBlob (dataURI) {
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
var ab = [];

for (var i = 0; i < byteString.length; i++) 
    ab.push(byteString.charCodeAt(i)); 

return new Blob([new Uint8Array(ab)], { type: mimeString });
};

在“blob”变量中,我们有包含完整图像数据的 BLOB 对象。

关于javascript - 如何在chrome或firefox中获取图片数据或图片在网页上的缓存路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15542724/

相关文章:

javascript - 如何创建 lambda 函数来更新 amplify 上的新记录?

google-chrome - chrome.storage.sync.set - 开发人员是否有权访问此数据?

firefox-addon - 调试 SDK 插件时如何修改源代码而不重新运行 cfx 和 Firefox?

firefox - 如何在 Firefox-Addon 中运行外部程序并获取返回码

javascript - 如何检测 "device mode"(MVC3 + Bootstrap)

javascript - Border Radius 生成器无故停止工作

javascript - 当 ngView 通过自身内部的链接更改时,我的函数将从 $scope 中剥离

javascript - 列出页面上所有图像的文件大小(Chrome 扩展)

javascript - 如何从 Chrome 扩展中获取浏览器消耗的流量?

javascript - 绕过浏览文件/上传文件对话框