Javascript 更改鼠标光标下图像部分的颜色
我有一个灰度图像,我想在鼠标光标下将图像的某些区域更改为彩色 它类似于黑暗中的手电筒(),但我想将部分黑白图像更改为彩色图像Javascript 更改鼠标光标下图像部分的颜色,javascript,jquery,html,css,image,Javascript,Jquery,Html,Css,Image,我有一个灰度图像,我想在鼠标光标下将图像的某些区域更改为彩色 它类似于黑暗中的手电筒(),但我想将部分黑白图像更改为彩色图像 我唯一的想法是将彩色图像置于灰度之上,并使用一些画布更改光标下区域彩色图像的不透明度…我将使用贴图,不幸的是,您必须将图像切割为几个PNG。。。也可以使用遮罩剪裁 我会使用地图,不幸的是,你必须将你的图像削减到几个PNG。。。也可以使用遮罩剪裁 有两种方法可以做到这一点: 首先,使用canvas.getImageData().data操作数据(返回像素数组,然后必须操作范
我唯一的想法是将彩色图像置于灰度之上,并使用一些画布更改光标下区域彩色图像的不透明度…我将使用贴图,不幸的是,您必须将图像切割为几个PNG。。。也可以使用遮罩剪裁 我会使用地图,不幸的是,你必须将你的图像削减到几个PNG。。。也可以使用遮罩剪裁 有两种方法可以做到这一点: 首先,使用canvas.getImageData().data操作数据(返回像素数组,然后必须操作范围内的像素,最后使用putImageData),但是速度会非常慢,当然 另一种方法是使图像具有灰度和彩色,就像您所说的,诀窍是使用全局合成操作 步骤:
- 制作一个缓冲区,将彩色图像全部放在里面,将第二个缓冲区清空
- 你有你的画布,和2个缓冲区
- 直接在画布上绘制灰度图像
- 在buffer2中绘制buffer1
- 将复合操作设置为目标操作
- 在给定位置(鼠标)绘制形状,圆?或保存在其他缓冲区中的形状
- 将复合操作回退到源代码结束
PS:当然,我们可以用DOM做一些简单的事情,这取决于你想要什么样的FX。有两种方法可以做到这一点: 首先,使用canvas.getImageData().data操作数据(返回像素数组,然后必须操作范围内的像素,最后使用putImageData),但是速度会非常慢,当然 另一种方法是使图像具有灰度和彩色,就像您所说的,诀窍是使用全局合成操作 步骤:
- 制作一个缓冲区,将彩色图像全部放在里面,将第二个缓冲区清空
- 你有你的画布,和2个缓冲区
- 直接在画布上绘制灰度图像
- 在buffer2中绘制buffer1
- 将复合操作设置为目标操作
- 在给定位置(鼠标)绘制形状,圆?或保存在其他缓冲区中的形状
- 将复合操作回退到源代码结束
PS:当然,我们可以用DOM做一些简单的事情,这取决于您想要什么样的FX,默认情况下,您可以显示灰度图像,并使用jquery中的.mouseover()事件隐藏灰度图像并显示彩色图像。 如果您使用javascript或jquery,它非常简单。如下
$( "#greyScaleImg" ).mouseover(function() {
$( "#ColorImg" ).css("display","");;
});
$( "#ColorImg" ).mouseout(function() {
$( "#greyScaleImg" ).css("display","");;
});
默认情况下,可以显示灰度图像,并使用jquery中的.mouseover()事件隐藏灰度图像并显示彩色图像。 如果您使用javascript或jquery,它非常简单。如下
$( "#greyScaleImg" ).mouseover(function() {
$( "#ColorImg" ).css("display","");;
});
$( "#ColorImg" ).mouseout(function() {
$( "#greyScaleImg" ).css("display","");;
});
使用画布非常有趣,但是如果你需要一些非常简单的东西:
$('.model').mousemove(函数(e){
变量offs=$(this).offset(),
p={x:offs.left,y:offs.top},
mPos={x:e.pageX,y:e.pageY},
x=mPos.x-p.x-50,
y=mPos.y-p.y-50;
$('.gray',this).css({left:x,top:y,backgroundPosition:-x+-y+'px'});
});代码>
.model{
位置:相对位置;
保证金:0自动;
背景:url('http://i.imgur.com/Tv0O1te.jpg');
宽度:236px;
高度:322px;
溢出:隐藏;
}
格雷先生{
位置:绝对位置;
排名:0;
左:0;
宽度:100px;
高度:100px;
背景:url('http://i.imgur.com/ozg5hsQ.jpg');
边界半径:50%;
}
使用画布非常有趣,
但是如果你需要一些非常简单的东西:
$('.model').mousemove(函数(e){
变量offs=$(this).offset(),
p={x:offs.left,y:offs.top},
mPos={x:e.pageX,y:e.pageY},
x=mPos.x-p.x-50,
y=mPos.y-p.y-50;
$('.gray',this).css({left:x,top:y,backgroundPosition:-x+-y+'px'});
});代码>
.model{
位置:相对位置;
保证金:0自动;
背景:url('http://i.imgur.com/Tv0O1te.jpg');
宽度:236px;
高度:322px;
溢出:隐藏;
}
格雷先生{
位置:绝对位置;
排名:0;
左:0;
宽度:100px;
高度:100px;
背景:url('http://i.imgur.com/ozg5hsQ.jpg');
边界半径:50%;
}
欢迎来到SO。此站点用于回答有关代码问题的特定技术问题。它不是一个代码编写服务。请提供您现有的代码和一个特定的问题,解释为什么它不工作使用canvas是一种很好的方法。css唯一的方法是使用过滤器(糟糕的浏览器支持)。我认为最好的办法是在服务器上创建一个黑白版本的图像,并将其发送到浏览器。在那里,您可以使用一个简单的js脚本来隐藏/显示一些内容parts@freefaller谢谢你的评论。我试图自己找到一些解决办法,但我没能得到一些聪明的想法,我想会有一些简单的解决办法。我只是需要一个如何做的方向。。。但下次我会尝试自己写点东西…欢迎来到SO。此站点用于回答有关代码问题的特定技术问题。它不是一个代码编写服务。请提供您现有的代码和一个特定的问题,解释为什么它不工作使用canvas是一种很好的方法。css唯一的方法是使用过滤器(糟糕的浏览器支持)。我认为最好的办法是创造一个黑色的