====== JavaScript Programing for DAM course ====== 在本门课程中,我们主要采用JavaScript作为教学语言来进行相关的数字媒体资源内容实践。因为我们主要采用的是B/S架构,因而具体可分为服务器开发和浏览器开发两部分。 ===== 基本篇 ===== JavaScript是一门非常不错的语言,它起源于在NetScape所推出的Mosaic浏览器中的动态脚本语言。虽然形式上它和Java的语言风格很接近,但其本质上是一种Lisp语言,非常适合做人工智能的^_^ JavaScript 与 Java 是两种完全不同的语言,无论在概念还是设计上。Java(由 Sun 发明)是更复杂的编程语言。ECMA-262 是 JavaScript 标准的官方名称。JavaScript 由 Brendan Eich 发明。它于 1995 年出现在 Netscape 中(该浏览器已停止更新),并于 1997 年被 ECMA(一个标准协会)采纳。 ===== 浏览器篇 ===== 待续 ===== 服务器篇 ===== 待续 ===== 高级篇 ===== ==== 基本图像处理 ==== JS目前发展得比较快,比较常见的图像处理库可用gm,大家简单的用以下命令安装: npm install gm 但是可能在做练习时碰到一个问题是如何直接操纵图像中的像素。有个偷懒的办法是用pngjs库,请安装: npm install pngjs 下面是参考例子: ---- var fs = require('fs'), PNG = require('pngjs').PNG; fs.createReadStream('in.png') .pipe(new PNG({ filterType: 4 })) .on('parsed', function() { for (var y = 0; y < this.height; y++) { for (var x = 0; x < this.width; x++) { var idx = (this.width * y + x) << 2; // invert color this.data[idx] = 255 - this.data[idx]; this.data[idx+1] = 255 - this.data[idx+1]; this.data[idx+2] = 255 - this.data[idx+2]; // and reduce opacity this.data[idx+3] = this.data[idx+3] >> 1; } } this.pack().pipe(fs.createWriteStream('out.png')); }); ---- ==== 高级图像处理 ==== 基本上只要是高级图像处理离不开OpenCV。幸运的是,开源社区提供了OpenCV的JavaScript包装。但同时不幸的是,这种包装不止一个,所以大家可能会有些迷惑。根据github网站上的活跃程度,我推荐使用[[https://github.com/peterbraden/node-opencv|node-opencv]],请在系统中亲自安装: npm install opencv node-opencv在Mac OS X和Linux中安装非常方便,不过windows中可能会遇到各种问题。因此建议在自己的机器上先安装VMWare或者VirtualBox等虚拟机软件,然后再在linux虚拟机中实验。另外,这年头山寨和李鬼的也很多,就不推荐使用opencv-node了, sigh ~~~ 厚着脸皮待续了 ===== 结束语 ===== 还没到这里