wx-caman——基于 CamanJS 的微信小程序 Canvas 像素级滤镜处理库

简介:

做这个项目的初衷是希望能够开发一款不依赖服务端而纯通过客户端渲染为图片添加滤镜的小程序。但是由于微信小程序中的 canvas 组件与 DOM Canvas 元素有较大差异,因此传统的 Canvas 处理库几乎无法在小程序中使用。在调研了一些传统浏览器端的项目后,我发现 CamanJS 的功能比较完善,同时也比较容易对微信小程序进行适配。在阅读完毕 CamanJS 源码(顺便学习了一下 CoffeeScript)以及学习了小程序的 canvas 组件的条条框框之后,wx-caman 就诞生了。wx-caman 由 CamanJS 封装而来,基于 ES6 进行了重写,并针对微信小程序进行了适配。其使用基本与 CamanJS 保持一致,同时剔除了无关功能,能够对小程序中的 canvas 进行像素级别的图像滤镜处理。

wx-caman 支持多个常见图片滤镜处理,例如 Brightness、Contrast、Sepia、Saturation 等,同时还内置了多个预设滤镜例如 lomo、sunrise、sinCity 等,方便直接使用;支持多图层混合,常见的混合模式 multiply、overlay 等也都悉数支持。

使用上,下面是一个简单示例:



<canvas style="width: 300px; height: 200px;" canvas-id="firstCanvas"></canvas>


Page({
  onReady: function (e) {
    // 使用 wx.createContext 获取绘图上下文 context
    var context = wx.createCanvasContext('firstCanvas')

    context.setStrokeStyle('#00ff00')
    context.setLineWidth(5)
    context.rect(0, 0, 200, 200)
    context.stroke()
    context.setStrokeStyle('#ff0000')
    context.setLineWidth(2)
    context.moveTo(160, 100)
    context.arc(100, 100, 60, 0, 2 * Math.PI, true)
    context.draw(false, function() {
      new WxCaman('firstCanvas', 300, 200, function () {
        this.brightness(10)
        this.contrast(30)
        this.sepia(60)
        this.saturation(-30)
        this.render()
      })
    })
  }
})


想要了解更多可移步项目仓库,欢迎 star,同时使用过程中有任何问题也欢迎提交 issue。




原文发布时间为:2018年06月21日
原文作者: 逆葵
本文来源:  掘金  如需转载请联系原作者




相关文章
|
5月前
|
前端开发 小程序 JavaScript
微信小程序canvas手写签字
微信小程序canvas手写签字
84 0
|
3月前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
301 0
|
3月前
|
小程序 前端开发
【微信小程序-原生开发】添加自定义图标(以使用阿里图标库为例)
【微信小程序-原生开发】添加自定义图标(以使用阿里图标库为例)
86 0
|
5月前
|
JavaScript Java 测试技术
学习资料库小程序设计ssm+vue.js附带文章和源代码设计说明文档ppt
学习资料库小程序设计ssm+vue.js附带文章和源代码设计说明文档ppt
34 1
|
4月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的学习视频资源库的系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的学习视频资源库的系统附带文章和源代码部署视频讲解等
43 0
|
5月前
|
小程序 JavaScript Java
基于微信小程序的学习资料库小程序的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的学习资料库小程序的设计与实现(源码+lw+部署文档+讲解等)
|
5月前
|
数据采集 小程序 数据挖掘
Matplotlib库模板学习,2024年最新微信小程序页面跳转方法总结
Matplotlib库模板学习,2024年最新微信小程序页面跳转方法总结
|
5月前
|
前端开发 小程序
【微信小程序5】利用canvas实现纯色背景抠图功能
【微信小程序5】利用canvas实现纯色背景抠图功能
238 0
|
2月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
62 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
2月前
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
61 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
下一篇
无影云桌面