Javascript 在Chrome扩展中将画布保存为.png后,如何获得正确的MD5哈希?

Javascript 在Chrome扩展中将画布保存为.png后,如何获得正确的MD5哈希?,javascript,html,canvas,md5,Javascript,Html,Canvas,Md5,我正在尝试将图像画布以.png的格式保存到磁盘,扩展名为chrome,文件名反映MD5哈希。为此,我使用了如下内容: var img = document.createElement("img"); img.src=canvas.toDataURL("image/png"); var image_data = atob(img.src.split(',')[1]); var arraybuffer = new ArrayBuffer(image_data.length); var view =

我正在尝试将图像画布以.png的格式保存到磁盘,扩展名为chrome,文件名反映MD5哈希。为此,我使用了如下内容:

var img = document.createElement("img");
img.src=canvas.toDataURL("image/png");
var image_data = atob(img.src.split(',')[1]);
var arraybuffer = new ArrayBuffer(image_data.length);
var view = new Uint8Array(arraybuffer);
for (var i=0; i<image_data.length; i++) {
   view[i] = image_data.charCodeAt(i);
}
var blob = new Blob([view], {type: 'image/png'});
var url = (window.webkitURL || window.URL).createObjectURL(blob);
var b = new FileReader;
b.readAsDataURL(blob);
b.onloadend = function () { 
   filename = SparkMD5.hash(b.result);
}
// ....some code
chrome.downloads.download ({ url, filename+'.png', saveAs: false });
var img=document.createElement(“img”);
img.src=canvas.toDataURL(“image/png”);
var image_data=atob(img.src.split(',')[1]);
var arraybuffer=新的arraybuffer(image_data.length);
var视图=新的Uint8Array(arraybuffer);

对于(var i=0;i“与保存文件后在Windows中看到的不同”-您在Windows中使用什么生成MD哈希?SparkMD5中使用的算法可能与在Windows中计算哈希的算法不同。感谢您的回复!我在Windows中使用哈希选项卡(每个Windows文件的属性窗口).Still SparkMD5在mhtml(而非png)上使用时似乎与此相同。因此,这似乎不是造成差异的原因。我猜,应该有一些与画布转换相关的内容需要进一步馈送到SparkMD5,从而导致文件/blob之间的差异。