我正在制作一个Fabric.js
用户可以上传图像和制作海报的基于应用程序的过程。最近我开始研究clip
使用用户绘制的路径裁剪图像的功能。
工作原理:用户从画布中选择图像并单击crop
按钮。activeElement
是从画布中选择的,它是image src
被提取的。此 SRC 用于将图像canvas
放在Bootstra Modal
. 用户单击将绘制路径的图像,最后裁剪图像。
单击裁剪按钮后,将从点生成 SVG 路径。然后这个值用于裁剪图像。
问题:如果图像是没有背景的 PNG(我们只使用 PNG),它将使背景变为“黑色”。
下面,@_path
指的是面料。通过用户点击使用 svg 路径创建的路径对象。@_image
是图像fabric.Image
。
clipPath: () ->
path_x = @_path.getLeft() - ( @_image.getWidth() / 2 )
path_y = @_path.getTop()- ( @_image.getHeight() / 2 )
@_path.setLeft path_x
@_path.setTop path_y
# console.log 'Fill white'
# @_image.setFill('white')
@_image.clipTo = ( ctx ) =>
@_path.render( ctx )
@_image._clipToPath = @getPathSVG()
@_canvas.renderAll()
return
我试过了@_image.setFIll('white')
,@_image.backgroundColor = 'rgba(255,255,255,1)'
但似乎没有效果。
问题:
- 我是否以正确的方式裁剪/裁剪图像(即:使用
clipTo
)?为什么你认为 - 为什么你认为图像在透明的地方是黑色的?
提前致谢。