当前位置: 首页 > backend >正文

42-滤镜

42-滤镜_哔哩哔哩_bilibili42-滤镜是一次性学会 Canvas 动画绘图(核心精讲+50个案例)2023最新教程的第43集视频,该合集共计53集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV16T411B7kP?spm_id_from=333.788.player.switch&vd_source=9218320e7bcc2e793fa8493559f4acd7&p=43

【效果图】

将8种滤镜方式存入数组,通过循环将效果展示在画布里,完整代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body>
</body>
<script>const canvas = document.createElement('canvas');canvas.width = 1400;canvas.height = 600;document.body.append(canvas);const context = canvas.getContext('2d');// 滤镜// context.filter = 'none;' // 默认值,没有滤镜// context.filter = 'blur(3px)'; // 模糊// context.filter = 'brightness(10%)'; // 亮度// context.filter = 'contrast(100%)'; // 对比度// context.filter = 'grayscale(0%)'; // 灰度// context.filter = 'hue-rotate(45deg)' // 色彩旋转// context.filter = 'invert(0%)' // 反相// context.filter = 'opacity(50%)' // 透明度// context.filter = 'saturate(50%)' // 饱和度// context.filter = 'sepia(100%)' // 褐度let filterArr = ['none', 'blur(3px)', 'brightness(50%)', 'contrast(50%)', 'grayscale(100%)', 'invert(100%)', 'opacity(50%)', 'saturate(150%)', 'sepia(100%)']for (let i = 0; i < filterArr.length; i++) {const shiftNum = 5;const currentFilter = filterArr[i]let img = new Image()img.src = './001.jpg'let row = Math.floor(i / shiftNum) // 0 1 2 ...let posY = i < shiftNum ? 16 : 16 + (216) * rowlet posXif (i < shiftNum) {posX = i == 0 ? 16 : 16 + (216) * i} else {let remainder = i % shiftNum   // 0 1 2 3         posX = remainder == 0 ? 16 : 16 + (216) * remainder}img.onload = function () {context.filter = currentFiltercontext.drawImage(img,180, 180, 600, 600,  // 源图像区域posX, posY, 200, 200)  // 目标画布区域}}</script></html>

http://www.xdnf.cn/news/9675.html

相关文章:

  • 【第2章 绘制】2.11多边形的绘制
  • 2025年电气工程与轨道交通国际会议:绿色能源与智能交通的创新之路
  • 苹果企业签名有什么限制
  • 去除ai写作痕迹的软件有哪些
  • C++异常处理机制
  • Abp Vnext Pro Vben5
  • php浮点数运算出错问题
  • 【白雪讲堂】多模态技术:统一认知的优化器
  • Spring测试框架全面解析
  • Java线程池管理最佳实践(设计模式)
  • 【JavaSE】异常处理学习笔记
  • 对比RFX2401C:AT2401C功率放大器的性价比与PIN兼容方案
  • 智汇云舟携最新无人机2D地图快速重建技术亮相广西国际矿业展览会
  • 蛋白质研究用蛋白酶购买渠道推荐
  • 深入理解C# Socket编程中的BeginConnect异步连接方法
  • vscode中launch.json、tasks.json的作用及实例
  • 苹果iOS应用ipa文件进行签名后无法连接网络,我们该怎么解决
  • 单链表反序实现
  • AI笔记 - 模型调试 - 调试方式
  • 日常踩坑-pom文件里jdbc配置问题
  • buunctf Crypto-[WUSTCTF2020]情书1
  • 模具制造业数字化转型:精密模塑,以数字之力铸就制造基石
  • 5月28日星期三今日早报简报微语报早读
  • AI任务相关解决方案1-基于NLP的3种模型实现实体识别,以及对比分析(包括基于规则的方法、CRF模型和BERT微调模型)
  • SQL进阶之旅 Day 6:数据更新最佳实践
  • STP协议:如何消除网络环路风暴
  • 【分治】翻转对
  • jsrpc进阶模式 秒杀js前端逆向问题 burp联动进行爆破
  • 【JavaEE】Spring事务
  • c++设计模式-介绍