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

时间:2014-09-16 21:16:46

标签: javascript html5 canvas md5

我正在尝试将图片画布保存为磁盘,如Chrome扩展名为.png,文件名反映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 });

文件保存正确,但我通过SparkMD5获取的代码中的MD5哈希值与保存文件后在Windows中看到的不同。我不明白为什么。用不同的保存方法(直接使用XMLHttpRequest等)进行了一些实验,但还没有运气。可能我误解了一些基本概念,只要我对网络编程有点新意。

我还使用了FileReader通过chrome.pageCapture.saveAsMHTML保存了文件,在这种情况下,MD5是相同的。 有什么问题,有没有办法在从Chrome扩展程序保存.png的同时获得与文件名和最终文件相同的MD5?

0 个答案:

没有答案