javascript - 仅更改覆盖图像的颜色而不是整个画布 Fabricjs
问题描述
我有一块画布,上面有透明 T 恤的背景图像。现在我想动态改变 t 恤的颜色,为了做到这一点,可以改变画布背景的颜色,衬衫会适应它。我的画布大约是 920 宽和 570 高,背景图像是 530 宽和 630 高,它位于画布的中心
现在我只想更改图像背景的颜色,以便画布的额外条不着色
我得到的结果
我想要的结果
我尝试过使用fabricjs库的overlaycolor图像,但它们都不适合我。我试图在 Fabric 库的 setBackgroungColor 中给出 left:190 ,但这也不起作用。
对此问题的任何帮助表示赞赏
<div id="shirtDiv">
<canvas id="tcanvas"></canvas>
</div>
<script>
var canvas;
var canvas = new fabric.Canvas('tcanvas',{backgroundColor:'red', floodColor:'red'});
canvas.setHeight(570);
canvas.setWidth(926);
canvas.setOverlayImage('https://lh3.googleusercontent.com/proxy/m96GqS_oGOQQPt4TMfxYQtrFfdRN6IcgkMQ-y4t_9DVDpSLsGv-2PXdX_NvjP1ljsgw680RuzZBiURQgzPSnWxmX1hU',canvas.renderAll.bind(canvas),{
top:25,
left:190
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/3.6.3/fabric.min.js"></script>
这是中的代码:jsfiddle
解决方案
尝试使用fabric.Image.backgroundColor
. 将在对图像进行平移之前绘制颜色(或渐变)的图像区域。
var canvas;
var canvas = new fabric.Canvas('tcanvas');
canvas.setHeight(570);
canvas.setWidth(926);
canvas.setOverlayImage('http://fabricjs.com/assets/printio.png', function() {
canvas.requestRenderAll();
canvas.overlayImage.backgroundColor = 'red';
}, {
top:25,
left:190
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/3.6.3/fabric.min.js"></script>
<div id="shirtDiv">
<canvas id="tcanvas"></canvas>
</div>
推荐阅读
- javascript - 使用 javascript 记录用户会话,以便稍后使用谷歌分析(离线)进行分析
- stm32 - STM32热初始化一个1 us-timer?
- c# - 帖子忽略格式后格式化文本框
- c# - 具有 C# 结构的生产者/消费者?
- html - 如何在整个 td 元素上设置可点击的链接区域?
- python - 使用 Raspberry pi 3 model b 和 picam 进行网络流式传输
- reactjs - 如何在单页上管理两个导航,一个是 createstack 导航器,第二个是抽屉导航器?
- sql-server-2008-r2 - 复制 SQL Server 2008 到 Azure SQL DB 登录失败
- javascript - 为什么我的代码在 Typescript 中实例化一个类时会卡住?
- c# - publicsign是做什么的?