iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >Canvas系列中滤镜效果的实现方法
  • 753
分享到

Canvas系列中滤镜效果的实现方法

2023-06-09 13:06:20 753人浏览 独家记忆
摘要

这篇文章给大家分享的是有关canvas系列中滤镜效果的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Canvas 真的是一个神奇的东西,不仅能够绘制各种图形、文本和位图,还能够对位图进行复杂的像素运算和处

这篇文章给大家分享的是有关canvas系列中滤镜效果的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Canvas 真的是一个神奇的东西,不仅能够绘制各种图形、文本和位图,还能够对位图进行复杂的像素运算和处理。因此像滤镜这些东西,其实 Canvas 也可以来实现。接下来,是见证奇迹的时刻。

首先,我们需要有一个 Canvas 容器,例如:

<canvas id="myCanvas" width="800" height="800"></canvas>

接下来,我们需要将使用 Canvas 来绘制一张图片:

var myCanvas = document.getElementById("myCanvas");var ctx = myCanvas.getContext("2d");var img = new Image();img.src = "./images/1526010092000.jpg";// 自备图片链接img.onload = (e) => {ctx.drawImage(img, 0, 0, 800, 800);// 第一个800表示绘制图片的宽,第二个800表示绘制图片的高}

Canvas系列中滤镜效果的实现方法

Canvas首次绘制的效果

再接下来就是对图片的像素进行一些操作。而要实现这样的操作,首先需要从 Canvas 获取到图片的像素信息,而获取这些信息可以通过 getImageData() 来实现。

// ... 省略前面代码img.onload = (e) => {// ... 省略前面代码    img = ctx.getImageData(0, 0, 800, 800);// 获得包含每个像素点颜色的字节数据}

由于图片的大小为 800 * 800,因为要对像素点进行遍历,以获得每一个像素点的红、绿、蓝色值。因此:

// ... 省略前面代码img.onload = (e) => {// ... 省略前面代码    var pixelLen = 800 * 800;   // 获得像素个数    for(var i = 0; i < pixelLen * 4; i += 4) {        var redC = img.data[i], // 第一个字节单位代表红色            greenC = img.data[i + 1],    // 第二个字节单位代表绿色            blueC = img.data[i + 2],   // 第三个字节单位代表蓝色            alpha = img.data[i + 3];   // 第四个字节单位代表透明度    }}

通过上面循环,我们获取到了包含在图片数据中的每个像素点的具体色值;需要注意的一点是,每一个像素点的数据不是一位,而是相邻的四位,分别代表了该点的红、绿、蓝和透明值。因此,实际上位图字节数据的数组长度等于像素点个数乘以 4,在 for 循环中我们也针对这一特性进行了相应处理。

通过将每一点的红、绿、蓝值进行平均,然后再将生成的平均值相同地赋予该像素点的红、绿、蓝值,就能形成灰度效果,最后通过 putImageData() 方法来重新绘制图片即可,代码如下:

// ... 省略前面代码img.onload = (e) => {// ... 省略前面代码    for(var i = 0; i < pixelLen * 4; i += 4) {   // ... 省略前面代码        var grey = parseInt((redC + greenC + blueC) / 3);  // 平均后获取灰度值        img.data[i] = grey; // 改变红色值        img.data[i + 1] = grey; // 改变绿色值        img.data[i + 2] = grey; // 改变蓝色值    }    ctx.putImageData(img, 0, 0, 800, 800);  // 重新绘制图片}

此时,则会形成灰度效果,如下图

Canvas系列中滤镜效果的实现方法

Canvas第二次绘制图片-灰度效果

透明度的控制只需要修改第四个字节单位对应的数值即可,该数值的范围为0~256,0代表完全透明,256代表完成不透明。例如:

// ... 省略前面代码img.onload = (e) => {// ... 省略前面代码    for(var i = 0; i < pixelLen * 4; i += 4) {   // ... 省略前面代码        img.data[i + 3] = 128;// 透明度50%    }    // ... 省略前面代码}

Canvas系列中滤镜效果的实现方法

Canvas第三次绘制效果-增加透明度

由此,通过控制图片中每个像素4个数据的值,即可达到滤镜的效果,是不是 so easy!

感谢各位的阅读!关于“Canvas系列中滤镜效果的实现方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Canvas系列中滤镜效果的实现方法

本文链接: https://www.lsjlt.com/news/256115.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Canvas系列中滤镜效果的实现方法
    这篇文章给大家分享的是有关Canvas系列中滤镜效果的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Canvas 真的是一个神奇的东西,不仅能够绘制各种图形、文本和位图,还能够对位图进行复杂的像素运算和处...
    99+
    2023-06-09
  • canvas如何实现滤镜效果
    这篇文章给大家分享的是有关canvas如何实现滤镜效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下<!DOCTYPE html>  ...
    99+
    2024-04-02
  • canvas中怎么实现图片滤镜效果
    canvas中怎么实现图片滤镜效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.获取图像数据 img.src = &rsquo...
    99+
    2024-04-02
  • 怎么用canvas实现图片滤镜效果
    小编给大家分享一下怎么用canvas实现图片滤镜效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1.获取图像数据 img...
    99+
    2024-04-02
  • Android实现滤镜效果ColorMatrix
    本文实例为大家分享了Android实现滤镜效果的具体代码,供大家参考,具体内容如下 1.效果图 2.矩阵算法 package net.surina.myapplication1...
    99+
    2024-04-02
  • Flutter实现图片滤镜效果
    目录ColorFilter 介绍选取图片布局本着学习的态度,研究了一下flutter里面的ColorFilter,字面意思翻译颜色过滤器,学习就是要举一反三,拓展思考就把这个功能做了...
    99+
    2024-04-02
  • Android如何实现滤镜效果ColorMatrix
    这篇文章将为大家详细讲解有关Android如何实现滤镜效果ColorMatrix,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Android是什么Android是一种基于Linux内核的自由及开放源代码的...
    99+
    2023-06-14
  • JavaScript canvas实现镜像图片效果
    本文实例为大家分享了JavaScript canvas实现镜像图片效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html>...
    99+
    2024-04-02
  • JavaScript中canvas实现代码雨效果的方法
    这篇文章将为大家详细讲解有关JavaScript中canvas实现代码雨效果的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文实例为大家分享了canvas实现代码雨效果的具体代码,供大家参考,具体内...
    99+
    2023-06-15
  • Python OpenCV实现3种滤镜效果实例
    目录前言浮雕滤镜效果雕刻滤镜效果凸透镜滤镜效果总结前言 本篇文章要使用OpenCV、Numpy 和Math这3个工具包实现一个简单的滤镜编辑器。在这个滤镜编辑器中,包含了3种滤镜效果...
    99+
    2024-04-02
  • PythonOpencv实现最强美颜滤镜效果
    目录前言环境安装效果展示第一组随机第二组随机源码展示额外的小知识补充:加载图片:图片模糊处理:总结前言 继老干妈、辣条之后,中国美颜软件在海外一夜成名,把所有人都幻化成了粉红小甜心。...
    99+
    2024-04-02
  • 实现微信小程序中的图片滤镜效果
    实现微信小程序中的图片滤镜效果随着社交媒体应用的流行,人们越来越喜欢在照片中应用滤镜效果,以增强照片的艺术效果和吸引力。在微信小程序中也可以实现图片滤镜效果,为用户提供更多有趣和创造性的照片编辑功能。本文将介绍如何在微信小程序中实现图片滤镜...
    99+
    2023-11-21
    图片 微信小程序 滤镜效果
  • Python学习之图片滤镜效果的实现
    目录前言Image模块对于图像处理的基本功能讲解对图像滤镜的应用1、显示图片轮廓2、显示图片浮雕效果3、显示图片轮廓4、显示图片模糊效果总结前言 滤镜效果是图像处理中常用的一种技术,...
    99+
    2023-05-19
    Python实现图片滤镜效果 Python图片滤镜 Python滤镜
  • 如何使用CSS实现简单的滤镜效果
    这篇文章主要介绍“如何使用CSS实现简单的滤镜效果”,在日常操作中,相信很多人在如何使用CSS实现简单的滤镜效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用CSS实...
    99+
    2024-04-02
  • 怎么在HTML5中使用Canvas实现一个放大镜效果
    这期内容当中小编将会给大家带来有关怎么在HTML5中使用Canvas实现一个放大镜效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。原理首先选择图片的一块区域,然后将这块区域放大,然后再绘制到原先的图片上...
    99+
    2023-06-09
  • 怎么用CSS滤镜实现颜色渐变翻转效果
    本篇内容介绍了“怎么用CSS滤镜实现颜色渐变翻转效果 ”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一下是...
    99+
    2024-04-02
  • 如何使用CSS滤镜实现圆角及波浪效果
    本篇内容主要讲解“如何使用CSS滤镜实现圆角及波浪效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用CSS滤镜实现圆角及波浪效果”吧!首先,我们来看这样...
    99+
    2024-04-02
  • 探寻Canvas技术下绚丽视觉效果的实现方法
    Canvas技术实现动态效果,探索绚丽视觉世界,需要具体代码示例 近年来,随着互联网和移动设备的高速发展,网页设计已不再局限于传统的静态展示方式。越来越多的网页设计师开始追求动态、生动的页面效果,以吸引用户的注意力。而Canva...
    99+
    2024-01-17
    Canvas 视觉效果 动态效果
  • Canvas实现放大镜效果完整案例分析(附代码)
    小编给大家分享一下Canvas实现放大镜效果完整案例分析(附代码),相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一张模糊的图片:鼠标点击任意位置,产生放大效果:哇...
    99+
    2023-06-09
  • javascript中canvas如何实现雨滴效果
    这篇文章将为大家详细讲解有关javascript中canvas如何实现雨滴效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文实例为大家分享了javascript canvas实现雨滴效果的具体代码,供...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作