This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
nodejs [2014/11/09 15:31] hongxin [高级图像处理] |
nodejs [2023/08/19 20:16] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== 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 ~~~ | ||
+ | |||
+ | |||
+ | 厚着脸皮待续了 | ||
+ | ===== 结束语 ===== | ||
+ | 还没到这里 |