聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> nodejs对图片进行缩放等操作的实现--node.js gm模块的使用都程

nodejs对图片进行缩放等操作的实现--node.js gm模块的使用都程

时间:2015-03-10 01:51:17    下载该word文档

node.js 对图片进行缩放等操作

node.js对图片进行操作是要安装gm模块,而gm模块是通过调用系统的ImageMagick来工作的,所以,首先系统要先安装ImageMagick

ImageMagickr 的下载地址:

http://www.imagemagick.org/download/

http://www.imagemagick.org/download/delegates/

安半步骤(说明,有些文件版不存在了,就用更新的版,从下载网复制文件名替)

wget  http://www.imagemagick.org/download/delegates/zlib-1.2.8.tar.gz

wget http://www.imagemagick.org/download/delegates/libpng-1.6.4.tar.gz

wget http://www.imagemagick.org/download/delegates/freetype-2.4.10.tar.gz

wget http://www.imagemagick.org/download/delegates/jpegsrc.v9.tar.gz

wget  http://www.imagemagick.org/download/ImageMagick-6.8.7-6.tar.gz



tar zxvf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure

make 

make install

cd ../

tar zxvf libpng-1.6.4.tar.gz

cd libpng-1.6.4

cd scripts/

mv makefile.linux ../makefile

cd ..

make

make install

cd ../

tar zxvf freetype-2.4.10.tar.gz

cd freetype-2.4.10

./configure

make

make install

cd ../

tar zxvf jpegsrc.v9.tar.gz 

cd jpeg-9/

./configure --enable-shared

make

make test

make install

cd ../



tar zxvf ImageMagick-6.8.7-6.tar.gz  

cd  ImageMagick-6.8.7-6/

./configure --prefix=/wp-content/local/imagemagick  

make  

make install



下面是添加php支持的

wget  http://pecl.php.net/get/imagick-3.2.0b2.tgz

tar -xzvf imagick-3.2.0b2

/wp-content/local/php/bin/phpize  

/configure --with-php-config=/wp-content/local/php/bin/php-config --with-imagick=/wp-content/local/imagemagick  

make  

make install  





添加环境变量

vim /etc/profile

修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码,请记住/wp-content/local/imagemagick/bin这个路径

PATH=$PATH:/usr/local/webserver/php/bin:/usr/local/webserver/mysql/bin:/wp-content/local/imagemagick/bin

export PATH

最后:执行 命令source /etc/profile 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。

以上已安装完成,可以用以下命测试一下是否成功

#convert -resize 100x100 src.jpg des.jpg  

可能出现的错误有

1convert 命令不存在,那就有可能环境变量没有配置好,未生效,或对于早前登录的用户没有生效。

2、如果出现error while loading shared libraries: xxx.so.x"错误的原因和解决办法



一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:

tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可.

另外一个原因就是已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件.

所以安装共享库后要注意共享库路径设置问题, 如下:

1) 如果共享库文件安装到了/lib/usr/lib目录下, 那么需执行一下ldconfig命令

ldconfig命令的用途, 主要是在默认搜寻目录(/lib/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表.

2) 如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它"/lib/usr/lib"目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf, 如下:

cat /etc/ld.so.conf

include ld.so.conf.d/*.conf

echo "/usr/local/lib" >> /etc/ld.so.conf

# ldconfig

3) 如果共享库文件安装到了其它"/lib/usr/lib" 目录下,  但是又不想在/etc/ld.so.conf中加路径(或者是没有权限加路径). 那可以export一个全局变量LD_LIBRARY_PATH, 然后运行程序的时候就会去这个目录中找共享库.

LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开. 比如安装了一个mysql/usr/local/mysql目录下, 其中有一大堆库文件在/usr/local/mysql/lib下面, 则可以在.bashrc.bash_profileshell里加入以下语句即可:



export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH   

一般来讲这只是一种临时的解决方案, 在没有权限或临时需要的时候使用.

4)如果程序需要的库文件比系统目前存在的村文件版本低,可以做一个链接

比如:

error while loading shared libraries: libncurses.so.4: cannot open shared

object file: No such file or directory

ls /usr/lib/libncu*

/usr/lib/libncurses.a   /usr/lib/libncurses.so.5

/usr/lib/libncurses.so  /usr/lib/libncurses.so.5.3

可见虽然没有libncurses.so.4,但有libncurses.so.5,是可以向下兼容的

建一个链接就好了

ln -s  /usr/lib/libncurses.so.5.3  /usr/lib/libncurses.so.4

出处:http://blog.csdn.net/sahusoft/article/details/7388617

      http://www.vrlinux.com/shujukuyingyong/20100407/26958.html

其它Imagemagick命令

ImageMagick最方便的地方就是可以在命令行模式下运行,结合shell脚本,我们可以进行非常复杂的图片操作,下面举几个简单的例子进行抛砖引玉。

(1) 图片格式转换:比如把目录下所有的jpeg格式的图片转化为png的,就可以如下进行操作:

[cpp] view plaincopyprint?

1. for pic in *.jpg  

2. do  

3. convert ${pic} `basename ${pic} .jpg`.png  

4. done  

for pic in *.jpg

do

convert ${pic} `basename ${pic} .jpg`.png

done

(2) 压缩图片大小:一般来说,在web应用中,如果图片很多或者很大,就需要考虑对图片大小进行适当的压缩,常用的压缩办法有:减小图片尺寸(图片缩放),调节压缩比或者去除图片中的多余信息。这些操作使用ImageMagick就可以轻易的完成:

[cpp] view plaincopyprint?

1. convert -resize 100x100 src.jpg des.jpg  

convert -resize 100x100 src.jpg des.jpg

src.jpg的图片大小调整为100x100convert命令在调整图片高度和宽度的过程中会进行等比压缩,也就是说图片des.jpg的高宽比将会和src.jpg一致。

[cpp] view plaincopyprint?

1. convert -quality 75% src.jpg des.jpg  

convert -quality 75% src.jpg des.jpg

压缩比越低,图片的大小越小,一般来说75%是最佳的压缩比,在这种情况下肉眼是很难看出图片的失真。

[cpp] view plaincopyprint?

1. convert -strip src.jpg dest.jpg  

convert -strip src.jpg dest.jpg

数码相机在拍照的时候会在生成的图片中留下一些额外的信息,这些信息往往是没用的,可以使用convert –strip命令去除。

以上三种操作可以合在一起进行:

[cpp] view plaincopyprint?

1. convert -resize 100x100 –strip -quality 75% src.jpg dest.jpg  

convert -resize 100x100 –strip -quality 75% src.jpg dest.jpg

ImageMagick功能十分强大,上面只是抛砖引玉,有兴趣的同学可以去挖掘其更多的功能和用法。

node.js代码引用

首先安装gm模块

#npm install gm

代码中:

var gm = require('gm').subClass({ imageMagick: true });

var base64Data_face = req.body.faceimg.substr(22, req.body.faceimg.length - 22);

                base64Data_face = base64Data_face.replace(/\s/g,"+");

                var dataBuffer_face = new Buffer(base64Data_face, 'base64');

//直接将接收到的buffer压缩转成图片并保存为文件new_path

gm(dataBuffer_face, 'image.jpg')

                    .resize(200, 200, '!')

                    .write(new_path, function (err) {

                        if (err)

                        {

                            console.log("gm:"+err);

                        };

                        console.log('Created an image from a Buffer!');

                    });

gmnode.js项目github网址

https://github.com/aheckmann/gm

graphicsmagick官网址

http://www.graphicsmagick.org/index.html

http://www.imagemagick.org/

其它资料

node-images

https://github.com/zhangyuanwei/node-images

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服