javascript - 在node.js中使用GM裁剪成带圆圈的图片

标签 javascript node.js image imagemagick

我已经使用 express 4 创建了一个上传图片功能,我想在此过程中为上传的图片创建几个不同的尺寸和形状。

    mkdirp(smallPath, function (err) {
    if (err) {
        console.error('resizeImg err='+err+']');
        return;
    } else {
      gm(basePath+'/original/'+image)
        .resize(35, 35)
        .noProfile()
        .write(smallOutputFilePath, function (err) {
          if (err) console.log(err);
        });
    }

现在,我希望将这张 35x35 的图像裁剪成带有透明背景的圆圈。像这样: enter image description here

我发现了这个类似的问题:Rounded corner using gm in nodejs .但答案使用命令行 ImageMagick,我想使用 gm 方法和能力。有人知道怎么解决吗?

最佳答案

一段时间后,我决定迁移到伟大的node-easyimage .它为我提供了更大的灵 active ,并允许我利用成功和错误响应的回调来重现我的命令行。

function resizeImageToSize(path, size, outputTempFilePath, outputFilePath) {
easyimg.exec('convert '+path+' -resize ' +
  (size) + 'x' + (size) + '^  -gravity center -crop ' +
  (size) + 'x' + (size) + '+0+0 +repage '+outputTempFilePath).then(
  function(file) {

    easyimg.exec('convert '+outputTempFilePath+' \\( -size ' +
      (size) + 'x' + (size) + ' xc:none -fill white -draw "circle ' +
      (size / 2) + ',' + (size / 2) + ' ' + (size / 2) + ',0" \\) -compose copy_opacity -composite '+
      outputFilePath).then(
      function(file) {
        fs.unlink(outputTempFilePath, function (err) {
          if (err) {
            console.log(err);
          }
        });
      }, function (err) {
        console.log(err);
      }
    );
  }, function (err) {
    console.log(err);
  }
);}

imagemagick插件真的被弃用了

关于javascript - 在node.js中使用GM裁剪成带圆圈的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30743705/

相关文章:

javascript - AngularJS : Reference error of the inject function 中的测试

javascript - 如何使按钮列表监听来自不同元素的事件

node.js - Mongoose 聚合匹配 objectId 数组

javascript - 如何使用普通 POST 请求将文件发送到应用程序脚本?

html - 水平对齐多个图像和文本

windows - DISM:为什么我收到错误:2,无法访问图像

c# - 如何获得磁盘/文件上图像的宽 x 高比?

javascript - DataTable JS 插入问题

node.js - 解析 EJS 模板中包含数据的 JSON 数组时,无法读取未定义的属性 'length'?

javascript - 如何使用 XMLHttpRequest ajax 将值从 cgi Cpp 返回到 HTML?