有没有一种方法可以从chrome'的存储映像

Is there a way to get an url out of a chrome's storage image?

本文关键字:chrome 映像 存储 一种 方法 有没有      更新时间:2023-09-26

我正在构建一个Chrome应用程序,我从一个XMLHTTPREQUEST获得一个.png文件,该文件稍后使用Chrome.storage API本地存储,因此我可以稍后使用它,以防使用该应用程序的人可以在不连接互联网的情况下访问它。问题是,在html中,你总是需要一个指定图像存储位置的url,我已经尝试过从chrome存储中存储的.png文件中获取url,但什么都不起作用。

我正在寻求一种方法,从存储的图像中获得一个在html img中使用的url。

这是我获取.png文件并将其存储在chrome存储中的代码。

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://siteurl.com/image.png', true);
xhr.responseType = 'image/png';
xhr.onload = function(e) {
    chrome.storage.local.set({'iconImage':this.response}, function() {
        console.log('Image Saved');
    });
};
xhr.send();

这是将图像从存储器中取出的代码。

chrome.storage.local.get(function(image){
    var img = image.iconImage;
    //here is where I need to create the url so I can use it to 
      display the image in a <img>
});

如果我的英语听不懂的话,谢谢你,也很抱歉。

chrome.storage.local只是一个键:值存储。它没有提供任何使用URL访问值的方法。

如果你需要将图像存储在URL可以引用的地方,你可以做两件事之一:

  1. 如果你想把它保存在chrome.storage中,只制作一个临时URL(当你关闭应用程序时会丢失),你可以把数据读取到ArrayBuffer中,并从中构建一个Blob对象。

    您可以从Blob中获取URL,但它只是表示内存中对象的句柄,所以不要指望您可以保存该URL并永远使用它。当应用程序关闭时,内存将被回收,旧的Blob URL下次将无效。

  2. 如果您希望将其永久存储在某个位置,以便保存URL并在将来使用它,则可以使用文件API将其写入文件系统。

    文件对象有一个.toURL方法,它将返回一个可用的URL。该URL将指向一个实际的文件,即使在您重新启动应用程序后(直到您选择删除该文件),它也将有效