Javascript 服装设计师。图层的颜色
我尝试在一个基于图层的结构中创建一个cloth designer应用程序,就像在Photoshop应用程序中一样。 我使用了一个带有alpha通道的图像,在它下面我放置了具有不同背景颜色的div。因此,我希望更改图像的颜色。 但我不知道如何用同样的颜色在图像上覆盖另一层。 当我尝试重复相同的技巧时,它将填充我想要透明的额外空间。换句话说,我只需要画一部分 图像,使另一部分保持透明 我尝试使用画布填充图像的rgb255,0255部分,但是画布太慢了Javascript 服装设计师。图层的颜色,javascript,html,image,css,Javascript,Html,Image,Css,我尝试在一个基于图层的结构中创建一个cloth designer应用程序,就像在Photoshop应用程序中一样。 我使用了一个带有alpha通道的图像,在它下面我放置了具有不同背景颜色的div。因此,我希望更改图像的颜色。 但我不知道如何用同样的颜色在图像上覆盖另一层。 当我尝试重复相同的技巧时,它将填充我想要透明的额外空间。换句话说,我只需要画一部分 图像,使另一部分保持透明 我尝试使用画布填充图像的rgb255,0255部分,但是画布太慢了 <div class="preview_u
<div class="preview_under">
<div style="background: transparent url(images/main_template.png);" class="preview_middle">
<div class="preview_over">
<!-- override layers -->
<div class="layer" style="background: url(images/blue.jpg);" data-name="modern" data-section="pocket">
<img src="images/pocket_modern.jpg">
</div>
<!-- /override layers -->
</div>
</div>
<!-- color of the template -->
<div class="fill" style="background: url(images/blue.jpg);"></div>
</div>
问题的图形表示:
UPD:
谢谢大家!
我用画布解决了我的问题。
我试过了,效果很好。
演示是。画布应该很快,也许慢与使用的算法有关 但是,如果您尝试使用画布,这意味着您的目标是现代浏览器。因此,SVG可能会起作用: 使用SVG更改颜色非常容易看到: 您可以在图层中覆盖布料部分,并使用类似于绘制它们的工具,此外,您还可以使用可视化编辑器在SVG上设置背景图像,因此无需手动进行覆盖: 其他可能的解决办法包括: 有一组预定义的颜色,每个变化都有一个带有精灵的PNG,因此每次颜色变化时只更改背景偏移。好的:不需要任何特殊的东西,可以在所有浏览器上使用;坏:颜色变化是固定的,创建这些精灵很耗时 使用画布更改图片,查找慢速算法中的问题。然后可以使用toDataURL缓存画布生成的图像。这样,当用户更改颜色时,如果缓存图像已经存在,则使用它。好:你不需要手工编辑图片;坏:代码更复杂
画布应该是快的,也许慢与使用的算法有关 但是,如果您尝试使用画布,这意味着您的目标是现代浏览器。因此,SVG可能会起作用: 使用SVG更改颜色非常容易看到: 您可以在图层中覆盖布料部分,并使用类似于绘制它们的工具,此外,您还可以使用可视化编辑器在SVG上设置背景图像,因此无需手动进行覆盖: 其他可能的解决办法包括: 有一组预定义的颜色,每个变化都有一个带有精灵的PNG,因此每次颜色变化时只更改背景偏移。好的:不需要任何特殊的东西,可以在所有浏览器上使用;坏:颜色变化是固定的,创建这些精灵很耗时 使用画布更改图片,查找慢速算法中的问题。然后可以使用toDataURL缓存画布生成的图像。这样,当用户更改颜色时,如果缓存图像已经存在,则使用它。好:你不需要手工编辑图片;坏:代码更复杂
另一种解决方案是仅使用颜色设置图像,但可以使用饱和度和亮度更改,该解决方案的浏览器支持有限,但很容易实现 然后申请
-webkit-filter: hue-rotate(xdeg);
换成任何颜色
使用svg过滤器也可以获得更多支持
另一种解决方案是仅使用颜色设置图像,但可以使用饱和度和亮度更改,该解决方案的浏览器支持有限,但很容易实现 然后申请
-webkit-filter: hue-rotate(xdeg);
换成任何颜色
使用svg过滤器也可以获得更多支持
谢谢大家!
我通过画布解决了我的问题。
我刚用过房产
..
ctx.drawImage(original, 0, 0);
ctx.globalCompositeOperation = "source-in";
ctx.drawImage(fill, 0, 0);
ctx.globalCompositeOperation = "source-over";
ctx.drawImage(border, 0, 0);
...
演示是。谢谢大家!
我通过画布解决了我的问题。
我刚用过房产
..
ctx.drawImage(original, 0, 0);
ctx.globalCompositeOperation = "source-in";
ctx.drawImage(fill, 0, 0);
ctx.globalCompositeOperation = "source-over";
ctx.drawImage(border, 0, 0);
...
演示是。只有理论让我眼花缭乱,你能分享一些代码吗?或者你想在这里做什么的一些例子?只有理论让我眼花缭乱,你能分享一些代码吗?或者您在这里尝试做的一些示例?但是如何通过svg更改png图像部分的颜色?我需要将所有图像重新绘制为矢量吗?遗憾的是,您不能以这种方式更改光栅图像,您需要使用矢量SVG图像来执行此操作。如果颜色选项有限,使用PNG精灵是最简单的事情:您必须创建精灵,或者您可以为每种颜色使用PNG文件。但是如何通过svg更改PNG图像部分的颜色?我需要将所有图像重新绘制为矢量吗?遗憾的是,您不能以这种方式更改光栅图像,您需要使用矢量SVG图像来执行此操作。如果颜色选项有限,那么使用PNG精灵是最简单的事情:你必须创建精灵,或者你可以为每种颜色使用PNG文件。哇,这是一个非常好的过滤器,但它只能在最新的浏览器中使用。哇,这是一个非常好的过滤器,但它只能在最新的浏览器中使用。