转载自:http://blog.csdn.net/kidx_/article/details/9709387
GM : GraphicsMagick for node.js 首先得安装 GraphicsMagick 或者 ImageMagick。 然后执行: $ sudo npm install gm
我安装的是ImageMagick,在ubuntu系统下快速安装: $ sudo apt-get install imagemagick
HOW TO USE GM 文档:http://aheckmann.github.io/gm/docs.html 使用ImageMagick var imageMagick = gm.subClass({ imageMagick: true }); 然后就像文档中使用gm那样使用ImageMagick即可(举个例子) imageMagick(“img.png”).resize(300, 100).autoOrient().write(’/path’, callback);
Example (nodejs + Express)
var gm = require('gm')
, fs = require('fs')
, imageMagick = gm.subClass({ imageMagick : true });
exports.imgUpload = function(req, res) {
res.header('Content-Type', 'text/plain');
var path = req.files.img.path; //获取用户上传过来的文件的当前路径
var sz = req.files.img.size;
if (sz > 2*1024*1024) {
fs.unlink(path, function() { //fs.unlink 删除用户上传的文件
res.end('1');
});
} else if (req.files.img.type.split('/')[0] != 'image') {
fs.unlink(path, function() {
res.end('2');
});
} else {
imageMagick(path)
.resize(150, 150, '!') //加('!')强行把图片缩放成对应尺寸150*150!
.autoOrient()
.write('public/images/user/'+req.files.img.name, function(err){
if (err) {
console.log(err);
res.end();
}
fs.unlink(path, function() {
return res.end('3');
});
});
}
};
上面只是index.js文件的部分核心代码 点击去下载完整Example
示例运行截图:
可以查看 public/images/user/ 里面的图片,验证你上传的图片是否被缩放了。
同理可对图片进行裁切: gm(“img.png”).crop(width, height, x, y)
详情看gm的文档http://aheckmann.github.io/gm/docs.html
分享是不错的顶一下,但是附件csdn这个就要喷一下了,我擦csdn就TM垃圾站,密码泄露事件导致我的邮箱现在经常收到垃圾信息。
这个,在win下是不是不能用这个东西?
可以 先要安装GraphicsMagick
var gm = require(‘gm’);
app.post(’/cut’, function(req, res) { var imgPath = req.files.uploadFile.path; var imgSize = req.files.uploadFile.size; var imgName = req.files.uploadFile.name;
console.log(imgPath); console.log(imgSize); console.log(imgName);
var imageMagick = gm.subClass({ imageMagick : true });
imageMagick(imgPath).resize(150, 150, ‘!’).autoOrient().write(‘public/images/user/’+ imgName, function(err){ if (err) { console.log(err); } });
res.send(‘11’); });
最后打印的err: { [Error: Command failed: Ч - -resize ] code: 4, signal: null }
能不能告诉下,这是为什么呢?
仔细看一下文档,有一个专门做缩略图的函数,可以调整大小和质量
gm("img.png").thumb(width, height, outName, quality, callback)
不过似乎 gm.resize.quality.write 更合适……
观摩学习
跟你遇到同样的问题
有gm剪切的事例吗? 我搞了老半天没搞好
可以参考下这个:
gm(image)
.resize(options.width, options.height, '^')
.gravity(options.crop)
.extent(options.width, options.height)
.toBuffer(callback);
可以试试 缩略图云,只需简单的发送请求,就可以获得缩略图了。再也不用考虑其他事情了。
@chihuohuo 在Windows下安装GM后, 例子中始终报 “异常错误!可能不支持该格式的图片。”
顶一个
正式运营:0.01元RMB/请求 也太贵了吧,类似七牛/upyun/阿里云图像处理之类的成熟方案都没那么高的价格。
@usherwong 怎么都不支持win7 64bit的系统啊。下载下的代码运行和上面的报错一样。
@ContentCoder 七牛可以自由更改图片格式,大小,每月10G空间免费,10G免费流量。。。
@snoopy @shiny @conContentCoder 用七牛爽。现在的云储存服务都会提供图片裁剪了。
mark
ImageMagick 安装在window是上还是要报错啊 求大神解救下 { [Error: Command failed: Ч - -resize ] code: 4, signal: null }
gm 有一个缺点——实际上是通过命令行来的。
最好还是有大神跳出来自己写个扩展什么的吧。
咦,这不是我一年前看到的帖子吗?
@hades amazon 的 s3?
@alsotang @.@ 我去研究一下
@a4712020502 用graphicmagick,还要再安装Ghostscript。
{ [Error: spawn ENOENT] code: ‘ENOENT’, errno: ‘ENOENT’, syscall: ‘spawn’ },出现这种错误。原来imagemagick是通过brew安装的,不是通过npm安装的,所有才会报错
咦,这不是我两年前看到的帖子吗?
var gm1=require(‘gm’).subClass({ imageMagick : true }); gm1(’/public/images/chat/abc.jpg’) .resize(240, 240,’!’) .noProfile() .write(’/public/images/chat/abc1.jpg’, function (err) { if (!err) console.log(‘done’); else { console.log(err); }
});
window下报错:![error.png](//static.cnodejs.org/Fi-uqcEgxURKrMRs7f-ZpLr-mp0F)
{ [Error: Command failed: ������ - /images
] code: 4, signal: null } 是什么原因啊?
为啥没有收藏功能哩
@a4712020502,安装ImageMagick-6.2.7-6-Q16-windows-dll.exe版本试试
马克
跟4楼 遇到同样的问题 ,有哪位大神解决了吗?
@ContentCoder 用七牛
可以打水印吗?
各位,我想说,我解决了, imageMagick(path)改成 gm(path) 还有要按顺序安装imageMagick 和gm
可以看看另外一个图像处理库 lwip,另外我们对大部分NODE版本做了预编译,npm install 即可。 https://github.com/weixin/node-lwip
简单的缩放可以使用nginx的imagefilter插件,如果想做裁剪,可以使用某个人写的带crop offset的imagefilter插件
学习 自豪地采用 CNodeJS ionic
mark
mark From Noder
mark From Noder
问题解决,win7下居然有自带的convert命令,和imageMagick命令冲突
做图片处理,难道没人用sharp这个包么?
安装了imageMagick和GraphicsMagick后,运行gmTest,提示“异常错误!可能不支持该格式的图片。”请问这是咋回事啊?
弱弱问下,使用的这个图片处理库能想ps那样裁剪png多余空白,并算出裁剪图片在原图的x,y坐标吗?我使用别的方法实现了,sharp和jimp(裁剪算法是网上找的)
@yyman001 你好 请问怎么实现的 我也遇到了类似的问题
@joleye @taoerchun 我也遇到了这样的问题。 在 win7下 [Error: Command failed: ��Ч���� 请问你们是如何解决的
可以用opencv4nodejs来做啊,
const cv = require(‘opencv4nodejs’); async function imgCut(){ let waldoMat = await cv.imreadAsync(
./data/s9.jpg
); let rows = waldoMat.rows; let cols = waldoMat.cols; let x0=19; let y0 = 17; let waldoRect = new cv.Rect(cols/2-x0,rows/2-y0,2x0,2y0); waldoMat = waldoMat.getRegion(waldoRect); cv.imshow(‘We’ve found Waldo!’, originalMat); cv.waitKey(); } imgCut(); 这是以坐标截取图片中间的部分,这个模块 完美支持对图片的各种姿势,还可以做模型匹配,对象跟踪,人脸识别,绝对是目前破解某东反爬措施的一大神器