Graphicsmagick autoOrient()。size()给出了node.js库中翻转的图像大小

时间:2015-08-14 14:43:25

标签: node.js imagemagick graphicsmagick

如何在图像自动定向后获取图像尺寸?

尺寸仍然提供预先自动定向的尺寸,而不是旋转后的尺寸。 (因此翻转x和y尺寸)。

var original = gm(response.Body).autoOrient();

        original.size(function (err, size) {
            if (err) {
                console.error(err);
                return res.status(500).send(err);
            }

            resize_photo(size, max_size, original, function (err, photo) {
                res.setHeader('Content-Type', 'image/jpeg');
                res.send(photo);
            });
        });

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,发现如果我将autoOrient文件写出来然后再读回来,size()会读取翻转的尺寸。

//Ignoring errors   
 gm('/images/original.jpg').autoOrient().write('/images/autoOriented.jpg', function (err) {
    gm('/images/autoOriented.jpg').size(function(err, size) {
        console.log('size: ', size);
    });
});

答案 1 :(得分:0)

一种解决方案是写入缓冲区,然后像这样调用.size

gm(response.Body).autoOrient().toBuffer(function (err, buffer) {
  if (!err) {
    gm(buffer).size(function (err, size) {
      if (!err) {
        console.log(size);
      }
    });
  }
});

注意:这是有效的,因为.size在新的自动导向缓冲区而不是原始文件或原始缓冲区上运行image magick命令identify