做這個項目的初志是願望可以開闢一款不依賴服務端而純經由過程客戶端襯着為圖片增加濾鏡的小順序。然則因為微信小順序中的 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。
本文首發於我的博客(點此檢察),迎接關注。