我的另一篇文章: Nginx/Apache图片缩略图技术

gm官网

1, 软件环境

nodejs

npm

GraphicsMagick or ImageMagick

貌似ImageMagick在处理大图片时比GraphicsMagick要快很多。

2, gm的一些关键函数

//1, 使用方式
var gm = require('gm');
gm("图片源路径")
.resize(200,0) //设置压缩后的w/h
.setFormat('JPEG')
.quality(70) //设置压缩质量: 0-100
.strip()
.autoOrient()
.write("压缩后保存路径" ,
function(err){console.log("err: " + err);})
//2, 获取图片尺寸
gm("图片路径").size(function(err,value){});
//3, 获取图片大小
gm("图片路径").filesize(function(err,value){});```

resize函数, 详细参数

resize {w}x{h} {%} {@} {!} {<} {>}

这里需要注意第3个参数

%

表示按照width/height的百分比, resize(70, 0, '%')表示宽度为原先的70%

@

(×_×)表示不明白,貌似可以限制压缩文件的filesize, gm文档上是这样描述的:

Use @ to specify the maximum area in pixels of an image.

**! **

表示强制width/height, resize(70, 70, '%')表示输出图片尺寸70x70,图片可能变形

^

表示最小width/height, resize(70,70,'^')表示width/height最小不能小于70px

>

表示只有源图片的width or height超过指定的width/height时,图片尺寸才会变。

如:源图片大小:640x640, resize(1000, 1000)最终图片尺寸不变。

<

>正好相反,表示只有源图片的width or height小于指定的width/height时,图片尺寸才会变

gm默认使用GraphicsMagick处理图片,如果你想使用ImageMagick,则:

var gm = require('gm');
var imageMagick = gm.subClass({ imageMagick: true })
//使用方式同上,把上面的gm(..)函数替换成imageMagick(..)函数即可

NodeJs + gm图片缩略图的更多相关文章

  1. nodejs操作图片方法

    最近项目中用到nodejs做图片服务器,用户上传图片生成缩略图返回地址一系列操作. 原来一直用.net平台,所有都封装好了生成缩略图这种分分钟就解决了,遂度娘一番全是调用imagemagick和gra ...

  2. Android 使用MediaStore.Images和 Cursor查询本地图片和图片缩略图

    先看一个实例: String[] projection = { MediaStore.Images.Thumbnails._ID ,MediaStore.Images.Thumbnails.DATA} ...

  3. Nginx/Apache图片缩略图技术

    1,目的 2,使用方式 3,Nginx + Linux 缩略图实现 3.1,原理 3.2,nginx配置实现 3.3,例子 4,Apache + Windows缩略图实现 4.1,环境 4.2,原理 ...

  4. GD库 图片缩略图 图片水印

    /** * GD库 图片缩略图 *//*$image = imagecreatefromjpeg("1.jpg");var_dump($image);exit;$width = i ...

  5. Nginx Image Module图片缩略图 水印处理模块

    Nginx Image Module图片缩略图 水印处理模块 下载Tengine tar -zxvf tengine-1.4.5.tar.gz cd tengine-1.4.5 下载Nginx tar ...

  6. NodeJs实现图片上传

    关于formidable NodeJs实现图片上传,此处主要用了插件:formidable github上关于formidable的资料如下: https://github.com/felixge/n ...

  7. [转帖]Nginx Image Module图片缩略图 水印处理模块

    Nginx Image Module图片缩略图 水印处理模块 https://www.cnblogs.com/jicki/p/5546972.html Nginx Image Module图片缩略图 ...

  8. 使用nodejs搭建图片服务器(一)

    背景 当我们开发一个Web项目的时候,为了将图片管理与web服务分离开,通常都会搭建一个图片服务器. 之所以选择nodejs是因为使用nodejs来搭建web项目相当简单而且快速,虽然这个图片服务器很 ...

  9. Nginx+Nodejs搭建图片服务器

    图片上传请求由Node处理,图片访问请求由Nginx处理. 1.Nginx配置 #user nobody; worker_processes 1; #error_log logs/error.log; ...

随机推荐

  1. grep 同时满足多个关键字和满足任意关键字

    grep 同时满足多个关键字和满足任意关键字 ① grep -E "word1|word2|word3"   file.txt    满足任意条件(word1.word2和word ...

  2. bzoj3572

    通过这题我知道了一个鬼故事,trunc(ln(128)/ln(2))=6……以后不敢轻易这么写了 好了言归正传,这题明显的构建虚树,但构建虚树后怎么树形dp呢? 由于虚树上的点不仅是议事会还有可能是议 ...

  3. 原创js模型驱动

    使用ajax方式请求数据,向页面展示一个对象的时候,往往让人头疼的是一大堆 .val()  .text()方法,这样做固然不会出错,但是效率太低 以下提供一个自己编写的Jquery模型驱动插件,正在测 ...

  4. [2015编程之美] 第一场A

    #1156 : 彩色的树 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定一棵n个节点的树,节点编号为1, 2, …, n.树中有n - 1条边,任意两个节点间恰好有一 ...

  5. RMAN备份与恢复深入解<一>

    一 数据库版本 SQL> select *from v$version; BANNER ----------------------------------------------------- ...

  6. ClassLoader工作机制

    阅读目录 一.ClassLoader概念 二.JVM平台提供三层classLoader 三.JVM加载class文件到内存有两种方式 四.ClassLoader加载类的过程 五.自定义类加载器 六.实 ...

  7. 用纯css写出三角形

    1.新建一个元素,随便什么元素,不过我习惯性的会用块元素来做.如果行内元素就display:block它.<div class="triangle"></div& ...

  8. SGU 390-Tickets(数位dp)

    题意:有标号l-r的票,要给路人发,当给的票的编号的各数位的总和(可能一个人多张票)不小k时,才开始发给下一个人,求能发多少人. 分析:这个题挺难想的,参考了一下题解,dp[i][sum][left] ...

  9. lightoj 1224

    很简单的Trie树,记录每个前缀的次数,dfs一次Trie即可 #include<set> #include<map> #include<list> #includ ...

  10. Mac,WIN下支撑 IPV6的 sftp客户端

    transmit 这样的话就可以使用 ipv6了,教育网的优势体现出来了,window下得 支撑 ipv6的sftp客户端 Bitvise SSH 和 WINSCP