探讨HTML5与Canvas的灰度图片效果
嘿哟大家好!今天就聊聊怎么网上展示灰度图呗。以前要用特定的工具转换格式才行,很麻烦。现在HTML5 canvas可以轻松实现!以后不用再找不到合适的工具而烦恼,更省心了噢~
HTML5与灰度图片的故事
HTML5和灰度图可真是形影不离的好哥们儿,亲密无间!利用HTML5的canvas功能,在网络上拉一拉动一动就能改变图片颜色,简直太便捷了~完全用不着费心做黑白或多彩两张图,节省了时间精力,真心赞不绝口!
我的HTML5和jQuery小demo
别急我这儿有个好玩意儿给你看看。教你如何用HTML5和jQuery把图片变得黑白或者变色,炒鸡有趣!快来看!
// 设置 window load事件是为了等待所有图片加载完毕之后才行运行 $(window).load(function(){ // 使图片渐入,这样有颜色的原图就不会显示出来了,然后再执行window load 事件 $(".item img").fadeIn(500); // 复制图片 $('.item img').each(function(){ var el = $(this); el.css({"position":"absolute"}).wrap("").clone().addClass('img_grayscale') .css({"position":"absolute","z-index":"998","opacity":"0"}).insertBefore(el).queue(function(){ var el = $(this); el.parent().css({"width":this.width,"height":this.height}); el.dequeue(); }); this.src = grayscale(this.src); }); // 使图片渐入 $('.item img').mouseover(function(){ $(this).parent().find('img:first').stop().animate({opacity:1}, 1000); }) $('.img_grayscale').mouseout(function(){ $(this).stop().animate({opacity:0}, 1000); }); }); // 使用canvas制作灰色图片 function grayscale(src){ var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); var imgObj = new Image(); imgObj.src = src; canvas.width = imgObj.width; canvas.height = imgObj.height; ctx.drawImage(imgObj, 0, 0); var imgPixels = ctx.getImageData(0, 0, canvas.width, canvas.height); for(var y = 0; y < imgPixels.height; y++){ for(var x = 0; x < imgPixels.width; x++){ var i = (y * 4) * imgPixels.width + x * 4; var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3; imgPixels.data[i] = avg; imgPixels.data[i + 1] = avg; imgPixels.data[i + 2] = avg; } } ctx.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height); return canvas.toDataURL(); }
实战演练:鼠标hover切换效果
这个代码真的好神奇!只要给图片配好你要处理的信息,就能快速地转换成模拟素描效果的纯黑白色图。更厉害的是,鼠标放上去,画面立刻就能恢复原样偷偷告诉你,还能调整变化速度,每秒能变动几千次!喜欢快还是慢,自己看着办!
兼容性问题与解决方案
放心!即便浏览器对HTML5不太友好,你的图片还是会原汁原味,并不会变成黑白。不过,要是你想让大家都能看到你的网页,却发现火狐或者谷歌打不开,那赶紧把文件传到网上去。
Canvas元素的神奇之处
,Canvas画图真是好用~2D、3D通吃~不过,有时候也会碰到“Security Error”,特别是用到toDataURL()和src这两个地方。
跨域图片问题与解决方法
说起跨域问题真是头疼,特别是在没服务器环境时更是麻烦。简单来说就像Canvas不认识现在网页和图片一样。所以,通常得搭个本地服务器环境,或者先上传到服务器再去处理。
结语及展望
聊到这儿了,咱们就简单说说。HTML5和Canvas真挺牛的,能把黑白图片照得特美。再说,咱们科技在进步,以后肯定还有更多好玩实用的新鲜玩意儿等着咱们!
评论0