是否有任何针对JavaScript的开源DEFLATE编码器实现?我需要它在客户端生成需要DEFLATE的二进制格式.
有没有办法阻止画布数据的alpha通道的预乘或解决方法?
我想生成一个图像(在这种情况下是一些随机的rgba值)并将画布保存为图像.
在第二步中,我想使用imageData将原始图像与生成的图像进行比较,但是由于生成的图像中我的rgba像素的alpha通道的预乘,这不起作用.
function drawImage(ctx) {
var img = ctx.createImageData(canvas.width,canvas.height);
for (var i=img.data.length;i-=4;) {
img.data[i] = Math.floor(Math.random() * 255);
img.data[i+1] = Math.floor(Math.random() * 255);
img.data[i+2] = Math.floor(Math.random() * 255);
img.data[i+3] = Math.floor(Math.random() * 255);
}
ctx.putImageData(img, 0, 0);
// our image data we just set
console.log(img.data);
// the image data we just placed onto the canvas
console.log(ctx.getImageData(0,0,canvas.width, canvas.height).data);
}
Run Code Online (Sandbox Code Playgroud)
在控制台中,您将找到两个console.log输出.第一个在预乘之前,第二个在预乘之后.这两个输出是不同的,一些值偏离3或更多.这仅在涉及部分透明度时发生(将alpha设置为255以外的任何值).
有没有办法获得相同的输出?关于这个问题的任何想法?任何想法如何创建像这个问题的解决方法?
先感谢您!