html 图像处理 灰度图和浮雕图类PS

html 图像处理 灰度图和浮雕图类PS浮雕图,灰度图,用html5canvas处理,类PS风格

大家好,又见面了,我是你们的朋友全栈君。

    html5 的canvas还有一些很酷炫的效果,接下来讲的是canvas对像素的处理,虽然略有些复杂,但实现出的效果,还是很赞的~~。

   为了不让大家失望,先强调一句:下列效果需调用getImageData(),而这个方法会被某些浏览器阻止,如chrome。原因是:

   受js同源策略影响,js跨域限制是不能获取非同一域名下的数据的,以下代码是在本地上测试的, 而本地的位置是没有域名的,所以浏览器都认为你是跨域,导致报错。

解决方法:可以用其他的浏览器。或者可以将图片写入PHP,具体可参照 解决getImageData跨域

    第一个效果:灰度图

    插入html如下:

 <img id=”img1″ src=”baijuyi.jpg”  />
 <input id=”btnGO” type=”button” value=”转成灰度图”/><br />
 <canvas id=”c1″ height=”200″ width=”320″></canvas><br />

<script>
 function $(id)
{

return document.getElementById(id);
}
function init()
{

$(“btnGO”).οnclick=function()
{

c1.width=img1.width;
c1.height=img1.height;
var ctx=c1.getContext(“2d”);
ctx.drawImage(img1,0,0,c1.width,c1.height);//将image绘制到canvas上
var imgData=ctx.getImageData(0,0,c1.width,c1.height);//获取image的所有像素点存储在imgData数组里,每四个为一个像素的rgba值;从上到下,从左到右。
//比如imgData.data[0]~imgData.data[3]表示第一个像素点。

for(var i=0;i<imgData.data.length;i+=4)
{

var r=imgData.data[i],
   g=imgData.data[i+1],
b=imgData.data[i+2];
var gray =(r*30+g*59+b*11+50)*0.01;//灰度值公式
imgData.data[i]=gray;
imgData.data[i+1]=gray;
imgData.data[i+2]=gray;
}
ctx.putImageData(imgData,0,0);//将image重绘到canvas中
}
}

</script>

第二种效果:浮雕图效果

<h2>像素操作</h2>
<img id=”img1″ src=”baijuyi.jpg”  />
<input id=”btnGO” type=”button” value=”转成浮雕图”/><br />
<canvas id=”c1″ height=”200″ width=”320″></canvas><br />

<script>

function $(id)
{

return document.getElementById(id);
}
function init()
{

$(“btnGO”).οnclick=function()
         {

c1.width=img1.width;
        c1.height=img1.height;
var ctx=c1.getContext(“2d”);
ctx.drawImage(img1,0,0,c1.width,c1.height);
var imgData=ctx.getImageData(0,0,c1.width,c1.height);
console.log(imgData);
var iData=imgData.data;

               //浮雕效果的实现可以有多种方式,这里介绍较简单的。新的像素色彩值是和右边像素的色彩值相减,然后再加128
for(var i=0;i<img1.height-1;i++)
{

   for(var j=0;j<img1.width;j++)
{

var start=(i*img1.width+j)<<2;
var r=iData[start]-iData[start+4]+128,
   g=iData[start+1]-iData[start+5]+128,
   b=iData[start+2]-iData[start+6]+128;
   //越界处理
   r=(r<0)?0:(r>255)?255:r;
   g=(g<0)?0:(g>255)?255:g;
   b=(b<0)?0:(b>255)?255:b;
   //再转灰度图
   var g=(r*30+g*59+b*11+50)*0.01;
   iData[start]=g;
   iData[start+1]=g;
   iData[start+2]=g;
   }

  }
  ctx.putImageData(imgData,0,0);//将新数据绘入canvas中
}
}
init();//调用函数
</script>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151352.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 适配器模式的分析、结构图及基本代码「建议收藏」

    适配器模式的分析、结构图及基本代码

    2022年2月6日
    50
  • python字典dict方法_python中dict的用法

    python字典dict方法_python中dict的用法文章目录:一.字典(dict)的概念:二.字典(dict)的定义:1.一般格式:2.空字典:3.举例:注意:三.字典(dict)的一些基本操作:1.增:2.删:3.查:4.改:四.字典(dict)的常见操作:五.字典三种取值方式:1.value=字典名[key]:2.setdefault:3.get:六.字典的遍历:1.key:2.value:3.item:4.依次打印key和value:5.元素值和对应的下标索引(enumerate()):一.字典(dict)的概念:Python字典是另一种可变容器模

    2022年10月6日
    3
  • String 转 JSONArray 日常挖坑填坑

    String 转 JSONArray 日常挖坑填坑1.lists里面的Map中的key不为list时均正常   List&lt;Map&lt;String,String&gt;&gt;lists=null;   if(cmtMaps.containsKey("cmtComments")){      lists=JSONArray.parseObject(cmtMaps.get("cmtComments"),Li…

    2022年6月20日
    80
  • [Elasticsearch]如何通过python操作ES数据库 pythonElasticsearch入门

    [Elasticsearch]如何通过python操作ES数据库 pythonElasticsearch入门[Elasticsearch]如何通过python操作ES数据库pythonElasticsearchElasticsearch基本介绍Elasticsearch入门安装与启动python操作ES数据库连接ES数据库无用户名密码状态有密码创建索引(ES中的索引即数据库)插入数据单条数据多条数据查询数据查询结果返回参数各字段含义最直接的查询方法用body指定条件模糊查询term精确查询multi_match,多字段查询prefix,前缀查询wildcard,通配符查询regexp,正则匹配bool,多条

    2022年5月8日
    313
  • c#中executeNonQuery执行异常怎么处理_getchar的返回值

    c#中executeNonQuery执行异常怎么处理_getchar的返回值SqlCommand.ExecuteNonQuery方法对连接执行Transact-SQL语句并返回受影响的行数。备注: 可以使用ExecuteNonQuery来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行UPDATE、INSERT或DELETE语句,在不使用DataSet的情况下更改数据库中的数据。     虽然ExecuteNonQuer

    2025年10月27日
    7
  • PyTorch安装最全流程

    PyTorch安装最全流程本文介绍基于Anaconda环境以及PyCharm软件结合,安装PyTorch深度学习框架。1.Anaconda安装下载链接:https://www.anaconda.com/1.1点击Next1.2点击同意1.3点击Next1.4选择目标文件夹,点击下一步1.5将Anaconda加入到系统变量安装成功后,在CMD中检查Anaconda时候加入到环境变量中。1.6单击启动AnacondaPrompt创建虚拟“房间”通过conda创建一个名为:pytorch.

    2022年6月24日
    74

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号