我需要检查FabricJS的画布上是否有空白区域并显示警报。我认为这可以通过在画布上检测像素来完成,但我不知道。怎么做?如何在FabricJS上检测画布上的空白区域?
回答
要获得像素数据,您需要访问2D上下文。要在FabricJS中做到这一点,您必须致电StaticCanvas.getContext();
标准织物画布将在原型链中具有此功能。 Fabric StaticCanvas doc
从那里得到的像素数据使用
var ctx = yourCanvas.getContext(); // your canvas is the Fabric canvas
var pixelData = ctx.getImageData(0,0,ctx.canvas.width, ctx.canvas.height);
要访问您要计算指数,然后检索的4个字节,使像素,一个字节分别处理红,绿单个像素,蓝色和阿尔法。
函数获取一个像素,一旦你有pixelData。
// pixelData is the pixel data, x and y are the pixel location
function getPixel(pixelData,x,y){
// make sure the coordinate is in bounds
if(x < 0 || x >= pixelData.width || y < 0 || y >= pixelData.height){
return {
r : 0,
g : 0,
b : 0,
a : 0
};
}
// get the index of the pixel. Floor the x and y just in case they are not ints
var index = Math.floor(x) * 4 + Math.floor(y) * 4 * pixelData.width;
// return the pixel data
return {
r : pixelData.data[index++],
g : pixelData.data[index++],
b : pixelData.data[index++],
a : pixelData.data[index++]
};
}
这应该有助于您找到空白区域。请注意,当alpha为零时,红色,绿色和蓝色也将为零。上面的函数非常慢,因此它不适用于您的问题,它只是显示如何从pixelData中获取像素以及如何获取像素地址(索引)。
@MarkE我只是在firefox,chrome和edge上尝试过它,然后渲染'rgba = 0xffffffff'然后'comp =“xor”'然后绘制一个全白的图像并读取相同的像素我得到'rgba = 0x00000000'从内存标准要求零阿尔法与所有其他通道的零匹配。 – Blindman67
好的,我可能记得错了......在这方面,我可以发誓一阵子XOR咬我。感谢您检查:-) – markE
- 1. 如何检测fabricJS在画布上的更改?
- 2. 在HTML5画布上检测由行描述的区域
- 3. 检测空白区域的图像
- 4. 如何删除Flash动画中的空白区域和空白区域?
- 5. 如何在画布旋转后检测画布上的点
- 6. 如何检测漫画书页面上的矩形区域?
- 7. 在FabricJS画布上拖放对象
- 8. 在fabricjs画布上实现ClipTo函数
- 9. 检测上的UIView的“空白空间”
- 10. 在画布上绘制区域
- 11. Fabricjs - 如何检测鼠标移动的画布?
- 12. 如何在画布上裁剪选定区域的位图?
- 13. 如何获得路径的精确区域在画布上
- 14. 空白区域
- 15. 如何更换新线的空白区域上的ColdFusion
- 16. 如何删除Magento 2中的图片上的空白区域
- 17. fabricjs:在长按上在画布上晃动对象
- 18. 如何移除图表上方的空白区域
- 19. 如何修复Bootstrap旋转木马上面的空白区域?
- 20. 如何完全去除散点图上的空白区域?
- 21. 如何修剪Caucho树脂上的空白区域?
- 22. 如何使用jquery在画布上添加文本区域javascript
- 23. 如何在php程序中检测字符串上的空白
- 24. Text Watcher在android中检测退格和空白区域?
- 25. Fabricjs - 如何检测对象存在的画布的总宽度/高度
- 26. 如何擦除画布上的路径区域(Android)
- 27. 如何在线性布局中添加空白区域?
- 28. 检测画布上的碰撞
- 29. 检测画布边界上的碰撞
- 30. 检测画布上的更改
在你的问题中没有太多细节。 FabricJS不提供为像你自己的html5 canvas一样的'getImageData'获取像素信息。您可能必须获取对您的基础FabricJS画布(这是一个本机html5画布)的引用,然后执行.getImageData。 – markE