Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改鼠标光标下图像部分的颜色_Javascript_Jquery_Html_Css_Image - Fatal编程技术网

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
  • 将复合操作设置为目标操作
  • 在给定位置(鼠标)绘制形状,圆?或保存在其他缓冲区中的形状
  • 将复合操作回退到源代码结束
这将是一个骗局。 如果您想要更复杂的效果,只需在缓冲区上创建图层效果,然后尝试一些coposite操作:)


PS:当然,我们可以用DOM做一些简单的事情,这取决于你想要什么样的FX。有两种方法可以做到这一点:

首先,使用canvas.getImageData().data操作数据(返回像素数组,然后必须操作范围内的像素,最后使用putImageData),但是速度会非常慢,当然

另一种方法是使图像具有灰度和彩色,就像您所说的,诀窍是使用全局合成操作

步骤:

  • 制作一个缓冲区,将彩色图像全部放在里面,将第二个缓冲区清空
  • 你有你的画布,和2个缓冲区
  • 直接在画布上绘制灰度图像
  • 在buffer2中绘制buffer1
  • 将复合操作设置为目标操作
  • 在给定位置(鼠标)绘制形状,圆?或保存在其他缓冲区中的形状
  • 将复合操作回退到源代码结束
这将是一个骗局。 如果您想要更复杂的效果,只需在缓冲区上创建图层效果,然后尝试一些coposite操作:)


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唯一的方法是使用过滤器(糟糕的浏览器支持)。我认为最好的办法是创造一个黑色的