2016-02-16 4 views
0

Мне нужно изменить размер изображения до фиксированного размера в Node.js через ImageMagick. Пример: изображения 200x140, 500x200 и 130x100, преобразованные в 100x50. Изображение должно быть растянуто или сжато без соотношения сторон и заполнить все пространство. Я делаю это так:Изменение размера изображения без соотношения сторон в Node.js

var im = require('imagemagick'); 

var resize_options = { 
    srcPath: path, 
    dstPath: path, 
    width: 100, 
    height: 50 
}; 
im.resize(resize_options, function (err) { 
    if (err) { 
     console.log(err); 
     res.end('Error!'); 
    } 
    else { 
     res.end('Success!'); 
    } 
}); 

Но изображение converten лишь высотой, например - 1440x900 преобразуется в 80x50 вместо 100х50. Что я делаю не так?

+0

Посмотрите, есть ли метод «replaceExact», который принимает только параметры выходного размера, или если вы можете пропустить восклицательный знак среди опций. Прочитайте документацию для ['gm'] (https://github.com/aheckmann/gm) в github - она ​​точно описывает эту проблему. Отмечая, что модуль 'imagemagick' заброшен в пользу' gm'. Если это решает проблему, отправьте ответ, описывающий, как это сделать. – traktor53

ответ

1
var im = require('imagemagick'); 

var width = 800; 
var height = 123; 
im.convert(['./in.jpg', '-resize', width + 'x' + height + '\!', './out.png'], 
    function (err, stdout) { 
    if (err) throw err; 
    }); 

выполнит эту работу. Он изменяет размер вашего изображения независимо от его первоначального размера до заданной ширины. & height

Смежные вопросы