如何使用节点js仅模糊部分图像

时间:2018-01-29 17:41:39

标签: node.js amazon-s3 imagemagick image-manipulation

我有来自亚马逊的服务,从照片中返回脸部的坐标!!

{ "Top" : 0.16105769574642181, "Left" : 0.32451921701431274, "Height" : 0.2788461446762085, "Width" : 0.27764421701431274 }


我想只模糊图像中的脸(或正方形)。我正在尝试使用ImageMagick,但我无法使其正常工作!所以,我发现了一种不同的方法,但我无法将其放入代码中 http://www.imagemagick.org/Usage/masking/#read_mask

如果你知道任何NPM可以帮助或如何使用ImageMagick这将是非常有帮助的

1 个答案:

答案 0 :(得分:2)

所以我找到了一个非常简单的解决方案:

  

image =>网址或路径;   faceDetails =>是面部数组aws rekognition返回facesDetails.boundinBox是你在问题中看到的对象

    let blur = function(image, faceDetails) {
        let img = gm(image);

        img.size(function(err, value){
            if (err) {
                console.log(err);
            } else {

                faceDetails.forEach((faceDetail) => {
                    const box    = faceDetail.BoundingBox,
                        width  = box.Width * value.width,
                        height = box.Height * value.height,
                        left   = box.Left * value.width,
                        top    = box.Top * value.height;

                    img.region(width, height, left, top).blur(0, 50);
                });

                img.write(__dirname + '/archive/resize.jpg', function (err) {
                    if (!err) {
                        console.log('done Wrting .....');

                    }else{
                        console.error(err);
                    }
                });
            }
        });
    };