Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点未屏蔽的图形标记_Javascript_Image_Node.js_Graphicsmagick - Fatal编程技术网

Javascript 节点未屏蔽的图形标记

Javascript 节点未屏蔽的图形标记,javascript,image,node.js,graphicsmagick,Javascript,Image,Node.js,Graphicsmagick,我正在使用它拍摄源图像,调整大小,裁剪,然后应用遮罩: gm(tempfile) .quality(90) .resize(null, 38) .gravity('Center') .crop(20, 34) .mask('./public/assets/mask.png') .write(thumb, function (err) { if (err) throw e

我正在使用它拍摄源图像,调整大小,裁剪,然后应用遮罩:

      gm(tempfile)
        .quality(90)
        .resize(null, 38)
        .gravity('Center')
        .crop(20, 34)
        .mask('./public/assets/mask.png')
        .write(thumb, function (err) {
          if (err) throw err
          console.log('success')
        })
运行后,图像将成功调整大小和剪切,但不会应用遮罩。不会抛出错误(即控制台打印“成功”)

附加到这也是我试图使用的遮罩图像。我希望图像只在黑色部分绘制。我试过使用一个透明的png(gm文档说它基于alpha通道屏蔽),以及一个黑白jpg,但结果是一样的


我肯定我错过了一些明显的东西,但我很难受,谢谢

再过一天左右,我就明白了:

面具本身没什么作用,真的很没用。如果对图像执行附加处理/绘制,它仅获取提供的遮罩图像并使用它来写保护遮罩像素不受后续更改

因为Node GM不支持composite,所以我的解决方案是使用系统调用应用掩码。因为似乎没有任何方法可以在一个步骤()中组合裁剪和合成,所以我分两个步骤完成:

      var exec = require('child_process').exec
      gm = require('gm')

      gm(tempfile)
        .quality(90)
        .resize(null, thumbOffset)
        .gravity('Center')
        .crop(thumbWidth, thumbHeight)
        .write(thumb, function (err) {
          if (err) throw err
          console.log('thumb sized')
          compositeMask(thumb, mask, function(){
            console.log('mask1 done')
          })
        })

      function compositeMask(thumb, mask, next) {
        var gmComposite = 'gm composite -compose in ' + thumb + ' ' + mask + ' ' + thumb
        exec(gmComposite, function(err) {
          if (err) throw err
          pathUpdate(entryID, { thumb: thumb })
          next()
        })
      }