
你可能会想问既然CSS已经有现成的功能可以支持基础的图像操作了,为什么我们还会想要为此使用一个像这样的 JavaScript 库呢。
好吧,除了有浏览器的支持,使用 CamanJS 有许多的好处。它为我们操作图像提供了更多的过滤器和选项。你可以在你的图像中创建高级过滤器,进而控制其中的每一个像素。你可以使用其内置的混合模式和图层系统。而它也能让你进行图像的跨域操作,并可以对操作产生的图像进行保存。
现在,就让我们来开始探索 CamanJS 所提供的特性吧!
引入必要的文件
要开始使用 CamanJS,需要简单的将这个库引入到你的页面中. 我所引用的这个最小化的 CDN 版本除了核心功能之外,所有的插件都被组合到了一个文件中:
<script src="https://cdnjs.cloudflare.com/ajax/libs/camanjs/4.1.2/caman.full.min.js"></script>从版本3到4,CamanJS 函数的语法发生了一点小小的改变。因此请确保在跟随这个教程进行实际操作时,你所引入的版本在4以上。
<img data-caman="brightness(10) contrast(30)" src="yourimage.jpg" alt="CamanJS Javascript库 Web页面 图像处理">
<img data-caman="love() hazyDays()" src="yourimage.jpg" alt="CamanJS Javascript库 Web页面 图像处理">
Caman("#your-image-id", function () { this.brightness(40); this.contrast(-10); this.sinCity(); this.render();});<canvas id="canvas"></canvas><button id="vintagebtn">Vintage</button><button id="noisebtn">Noise</button><button id="tiltshiftbtn">Tilt Shift</button>
var vintage = $("#vintagebtn");var noise = $("#noisebtn");var tiltshift = $("#tiltshiftbtn");vintage.on("click", function(e) { Caman("#canvas", img, function() {this.vintage();this.render(); });});noise.on("click", function(e) { Caman("#canvas", img, function() {this.noise(10);this.render(); });});tiltshift.on("click", function(e) { Caman("#canvas", img, function() {this.tiltShift({ angle: 90, focusWidth: 600}).render(); });});tiltshift() 也接受另外的像 startRadius 和 radius 这样的参数, Factor.vignette() 有 size 和 strength 这两个参数,你可以参考 CamanJS 文档 来深入理解所有的过滤器。<form id="silderInput"> <label for="hue">Hue</label> <input id="hue" name="hue" type="range" min="0" max="300" value="0"> <label for="contrast">Contrast</label> <input id="contrast" name="contrast" type="range" min="-20" max="20" value="0"></form>下面的jQuery代码块处理所有了操作:
$("input[type=range]").change(applyFilters);function applyFilters() { var hue = parseInt($("#hue").val()); var cntrst = parseInt($("#contrast").val());Caman("#canvas", "image.jpg", function() { this.revert(false); this.hue(hue); this.contrast(cntrst); this.render();});}Caman.Filter.register("oldpaper", function() { this.pinhole(); this.noise(10); this.orangePeel(); this.render();});Caman.Filter.register("greenTint", function() { this.brightness(-10); this.newLayer(function() {this.setBlendingMode("overlay");this.opacity(100);this.fillColor("#689900");this.filter.brightness(15);this.filter.contrast(10); }); this.render();});this.render(function () { this.save("png");}); Demo 跟完整代码 
CamanJS Javascript库 Web页面 图像处理
作为练习,你可以尝试改善下用户体验,如标记下当前图片上应用的滤镜或修改下保存按钮来避免需要重命名的问题。
就像我们看到的, CamanJS 是一个非常有用的图片操作库,带有很多滤镜,还有不断发展中的功能,而本教程仅仅讲述了一个皮毛。
以上内容比较长,但是介绍的都很详细,耐心阅读,对学习使用CamanJS在Web页面上处理图像很有帮助。