{"id":13671444,"url":"https://github.com/ChrisCindy/wx-caman","last_synced_at":"2025-04-27T18:31:18.068Z","repository":{"id":57400356,"uuid":"136589592","full_name":"ChrisCindy/wx-caman","owner":"ChrisCindy","description":"基于 CamanJS 的微信小程序 Canvas 像素级滤镜处理库","archived":false,"fork":false,"pushed_at":"2018-06-24T13:43:58.000Z","size":1747,"stargazers_count":132,"open_issues_count":3,"forks_count":17,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-22T10:52:53.380Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChrisCindy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-08T08:23:11.000Z","updated_at":"2025-02-23T08:31:52.000Z","dependencies_parsed_at":"2022-09-05T03:41:37.447Z","dependency_job_id":null,"html_url":"https://github.com/ChrisCindy/wx-caman","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChrisCindy%2Fwx-caman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChrisCindy%2Fwx-caman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChrisCindy%2Fwx-caman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChrisCindy%2Fwx-caman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChrisCindy","download_url":"https://codeload.github.com/ChrisCindy/wx-caman/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251187133,"owners_count":21549592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T09:01:09.789Z","updated_at":"2025-04-27T18:31:17.746Z","avatar_url":"https://github.com/ChrisCindy.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# wx-caman\n\n[![Build Status](https://travis-ci.com/ChrisCindy/wx-caman.svg?branch=v1.0.1)](https://travis-ci.com/ChrisCindy/wx-caman)\n\n\u003e 基于 [CamanJS](https://github.com/meltingice/CamanJS) 的微信小程序 Canvas 像素级滤镜处理库\n\n## 介绍\n\n由于微信小程序中的 canvas 组件与 DOM Canvas 元素有较大差异，因此传统的 Canvas 处理库几乎无法在小程序中使用。wx-caman 由 [CamanJS](https://github.com/meltingice/CamanJS) 封装而来并针对微信小程序进行了适配。其使用基本与 CamanJS 保持一致，能够对小程序中的 canvas 进行像素级别的图像滤镜处理。\n\n## 安装\n\n### npm\n\n在 [mpvue](https://github.com/Meituan-Dianping/mpvue) 等支持 npm 的小程序开发框架中，可以直接使用 npm 进行安装：\n```shell\nnpm install wx-caman\n```\n然后在项目中引入：\n```js\n// es6 modules\nimport WxCaman from 'wx-caman'\n\n// or cjs\nvar WxCaman = require('wx-caman').default\n```\n\n### 直接引入文件\n\n将当前 repo 中 `dist/` 目录下的 `wx-caman.min.js` 文件直接拷贝至你的小程序项目中的 `vendor` 目录下，然后在项目中引入：\n```js\nvar WxCaman = require('vendor/wx-caman.min.js').default\n```\n\n\n## 快速开始\n\n小程序对于 canvas 组件限制较多，详情参考[官方文档](https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html#canvas)。在使用 wx-caman 前，我们必须在 WXML 中定义 canvas 组件并且设置 canvas-id。\n\n```html\n\u003ccanvas style=\"width: 300px; height: 200px;\" canvas-id=\"firstCanvas\"\u003e\u003c/canvas\u003e\n```\n\n```js\nPage({\n  onReady: function (e) {\n    // 使用 wx.createContext 获取绘图上下文 context\n    var context = wx.createCanvasContext('firstCanvas')\n\n    context.setStrokeStyle('#00ff00')\n    context.setLineWidth(5)\n    context.rect(0, 0, 200, 200)\n    context.stroke()\n    context.setStrokeStyle('#ff0000')\n    context.setLineWidth(2)\n    context.moveTo(160, 100)\n    context.arc(100, 100, 60, 0, 2 * Math.PI, true)\n    context.draw(false, function() {\n      new WxCaman('firstCanvas', 300, 200, function () {\n        this.brightness(10)\n        this.contrast(30)\n        this.sepia(60)\n        this.saturation(-30)\n        this.render()\n      })\n    })\n  }\n})\n```\n\n## 进阶使用\n此处文档可直接参考 CamanJS 文档：[AsvancedUsage](http://camanjs.com/guides/#AdvancedUsage)\n\n注：wx-caman 不支持 Cropping/Resizing 和 Events。\n\n## 内置函数\n此处文档可直接参考 CamanJS 文档：[Built-In Functionality](http://camanjs.com/guides/#BuiltIn)\n\n支持基础滤镜如下：\n- Brightness\n- Channels\n- Clip\n- Colorize\n- Contrast\n- Curves\n- Exposure\n- Fill Color\n- Gamma\n- Greyscale\n- Hue\n- Invert\n- Noise\n- Saturation\n- Sepia\n- Vibrance\n\n## 预设滤镜\nwx-caman 支持以下预设滤镜：\n- vintage\n- lomo\n- sinCity\n- sunrise\n- crossProcess\n- orangePeel\n- love\n- grungy\n- pinhole\n- oldBoot\n- glowingSun\n- hazyDays\n- herMajesty\n- nostalgia\n- hemingway\n\n其中，`vintage/lomo/sunrise/grungy/pinhole/oldBoot/glowingSun/hazyDays/nostalgia` 可接收一个 Boolean 参数，表示是否使用晕映效果，默认为 true，即使用晕映效果。\n\n使用示例：\n```\nnew WxCaman('firstCanvas', 300, 200, function () {\n  this.lomo(false)\n  this.render()\n})\n```\n\n\n## 注意事项\n- 为了确保 wx-caman 准确获取 canvas 组件的像素数据，请务必在 draw 的回调函数中使用 wx-caman\n- wx-caman 需要获取到 canvas 组件的真实宽高。但在实际使用中 canvas 组件可能使用了 `width: 90%` 等相对宽高数值，此时可使用 `wx.createSelectorQuery()` 来获取到 canvas 组件渲染后的实际宽高，然后再进行 wx-caman 的初始化\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FChrisCindy%2Fwx-caman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FChrisCindy%2Fwx-caman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FChrisCindy%2Fwx-caman/lists"}