就像其他人提到的,如果您在服务器中启用 gzip 压缩传输,浏览器应该会自动解压缩图像。如果图像是具有大面积相同颜色的扫描文档,这实际上可以压缩图像很多;如果它更像是一张航拍照片,那么就没有那么多了。
现在您在客户端有了图像,您还有另一个问题:如何处理这 800 万个 16 位像素。
在我们输入数组之前,我们必须使用字符串来表示任意数据。这比听起来更安全,因为在 JavaScript 中字符串是 16 位代码单元的序列,可以解释为以 UTF-16 编码的文本。JavaScript 对编码无效的字符串完全没有问题。
这意味着您可以将图像存储为一个长字符串,并使用charCodeAt
. 对于大多数操作目的,这应该相当快。
这是一个将 16 位二进制数据(实际上是 PNG 图标)加载到字符串中并输出前 16 个元素的示例:
$.ajax({
url:"http://fiddle.jshell.net/favicon.png",
success: function(data) {
// Now we have the data, let's show it:
var out = "";
for (var i = 0; i < 16; i++) {
out += ","+data.charCodeAt(i).toString(16);
}
console.log(out.substring(1));
},
beforeSend: function ( xhr ) {
xhr.overrideMimeType("text/plain; charset=utf-16be");
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("ERROR: "+textStatus+" "+errorThrown);
console.log(jqXHR);
},
})
(在jsfiddle上的实时示例)