如何在node.js中使用graphicsmagick来裁剪圆形图片(其他方式可以通过其他方式在node.js上进行)
如何使用graphicsmagick裁剪圆形图片?
(使用png透明背景外圈)
我在node.js
使用graphicsmagick,或者有任何其他方式使这在node.js
?
之前: http : //i.stack.imgur.com/B34C5.png
之后: http : //i.stack.imgur.com/PWjQW.png
经过许多小时的摆弄之后,我find了一个干净的解决scheme,使用node-gm和Imagemagick。
var gm = require('gm').subClass({ imageMagick: true }); var original = 'app-server/photo.jpg'; var output = 'app-server/photo.png'; var size = 80; gm(original) .crop(233, 233,29,26) .resize(size, size) .write(output, function() { gm(size, size, 'none') .fill(output) .drawCircle(size/2,size/2, size/2, 0) .write(output, function(err) { console.log(err || 'done'); }); });
我使用另一个模块来解决这个问题:
这个代码是方形图像(this.height = this.width)
节点pngjs
var fs = require('fs'), PNG = require('pngjs').PNG; fs.createReadStream(__dirname + "/input.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; var radius = this.height / 2; if(y >= Math.sqrt(Math.pow(radius, 2) - Math.pow(x - radius, 2)) + radius || y <= -(Math.sqrt(Math.pow(radius, 2) - Math.pow(x - radius, 2))) + radius) { this.data[idx + 3] = 0; } } } this.pack().pipe(fs.createWriteStream(__dirname + "/output.png")); });
我可以用下面的插件来实现: https : //www.npmjs.com/package/circle-image
安装完成后:
var images = require('circle-image'); var imageSizes = [125, 100, 30]; //uniqueId param is used to identify a user //so user the primary key or something guaranteed to be unique images.execute('imagepath', uniqueId, imageSizes).then(function (paths) { //array of circularized image paths console.log(paths[0]); //circle_user_{uniqueId}_150.png })
- 在Nodejs中使用gmresize和构图两个或多个图像
- 将graphics魔术输出的图像转换为无base64编码的响应
- 在Graphicsmagick中合成图像
- 使用Express.js通过强大和gm上传的stream文件消除双重写入
- 我如何在AWS Lambda上安装GraphicsMagick或ImageMagick?
- Graphicsmagick autoOrient()。size()在node.js库中给出了翻转的图像大小
- 使用graphicsmagick在nodejs上创build图像
- 使用GraphicsMagick / gm在添加的图像之间添加边距
- 检查透明度,GraphicsMagick node.js