如何检测通过画布生成的图像是否为空白(透明PNG)
How to detect if an image generated via canvas is blank (transparent PNG)?
我正在研究一个应用程序,其中在HTML5画布上创建/编辑图像,然后保存到文件存储/云。问题在于"节约效率"。保存一个空白画布,即一个完全透明的空白PNG与toDataURL()
一起发送。检测空白PNG的一种方法是在单击任何编辑/绘图功能时切换布尔值,并在清除屏幕时重置该值。
然而,这样的方法并不是万无一失的,因为用户可能在点击绘制/编辑功能后保存图像,但却没有绘制任何东西。是否有一种更原生的方法来检测画布是否返回一个二进制字符串,该字符串在浏览器上打开后发生了变化?或者其他一些方法来确保在客户端检测到空白的透明PNG ?
HTML:
<canvas id="canvas_img" width="300" height="200" border="0"></canvas>
脚本:
isCanvasTransparent(document.getElementById("canvas_img"));
function isCanvasTransparent(canvas) { // true if all pixels Alpha equals to zero
var ctx=canvas.getContext("2d");
var imageData=ctx.getImageData(0,0,canvas.offsetWidth,canvas.offsetHeight);
for(var i=0;i<imageData.data.length;i+=4)
if(imageData.data[i+3]!==0)return false;
return true;
}
:
不要使用CSS样式声明像border: 1px solid black;
的CANVAS
,因为边界包含在画布图像,并且,作为结果,alpha香奈儿总是不等于零。
这不是原生的,但应该可以工作,因为空白画布总是生成相同的数据URL。
你可以创建一个隐藏画布,获取画布的数据URL如果它与你的编辑器匹配,就不要上传它。就这么简单。
演示。首先,点击保存,不要越过画布。然后浏览一下,然后点击保存。大作。
相关文章:
- 是否可以仅通过jQuery将图像替换为用户动态选择的另一个图像
- 如何检查图像是否已加载
- 检测图像URL是否已损坏JQUERY
- JavaScript:是否可以将图像/信息附加到数组项
- 在检索数据时是否可以停止图像加载请求
- 是否可以在jquery中使用拖动滑块在4个图像之间滑动
- HTML/JavaScript拖动&Drop-是否可以使重影图像*NOT*看起来'冲洗掉'
- Javascript:检测文件读取器中是否有图像
- Javascript检查图像是否在数组中
- 是否可以创建一个画布来提取图像数据,而无需实际渲染画布
- fabric.js:使用 Image.set() 调整图像大小是否会降低图像质量
- 交换 img src 或显示/隐藏多个图像是否更快
- 检测 jpg 图像是否正确加载
- jquery .width(value) 是否调整容器内图像的大小
- 动态图像加载是否会减少服务器过载
- jQuery或Javascript检查是否加载了图像
- 检查图像是否正确加载了Quit
- 有没有一种方法可以判断图像src是否在javascript内部返回null
- 当只给定宽度或高度时,是否所有浏览器都按比例缩放图像
- 是否可以在生成器中为图像添加权重