User Tools

Site Tools


nodejs

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 ~~~
 +
 +
 +厚着脸皮待续了
 +===== 结束语 =====
 +还没到这里
nodejs.txt · Last modified: 2023/08/19 20:16 (external edit)