Saltar al contenido

Cambiar el tamaño y recortar la imagen y mantener la relación de aspecto NodeJS & gm

Hola usuario de nuestra página web, encontramos la respuesta a tu interrogante, continúa leyendo y la obtendrás a continuación.

Solución:

Para lograr una imagen redimensionada y recortada con un centro de gravedad con el gm módulo, puede usar algo similar a esto:

gm('/path/to/image.jpg')
  .resize('200', '200', '^')
  .gravity('Center')
  .crop('200', '200')
  .write(writeStream, function (err) 
    if (!err) console.log(' hooray! ');
  );

los '^' argumento sobre el resize La función le dirá a GraphicsMagick que use la altura y el ancho como mínimo en lugar del comportamiento predeterminado, máximo. La imagen redimensionada resultante tendrá el ancho o la altura sea su dimensión designada, mientras que la dimensión no conforme es mayor que el tamaño especificado.

Después gravity función le dice a GraphicsMagick cómo lo siguiente crop debe comportarse la función, que recortará la imagen al tamaño final.

Puede encontrar documentación detallada para las opciones de GraphicsMagick utilizadas por el gm módulo aquí: http://www.graphicsmagick.org/GraphicsMagick.html

Prueba con imagemagick paquete para NodeJS: https://github.com/yourdeveloper/node-imagemagick

im.crop(
    srcPath: process.argv[2],
    dstPath: 'cropped.' + process.argv[2].split('.').pop(),
    width: 200,
    height: 200,
    quality: 1,
    gravity: 'Center'
, function(err, stdout, stderr)
    if (err) throw err;
    console.log('resized ' + process.argv[2].split('/').pop() + ' to fit within 200x200px');
);

Actualizar: Tenga en cuenta que el paquete node-imagemagick no se ha actualizado en mucho tiempo. Considere la respuesta de Freyday, ya que es la más actualizada.

Otra solución sin bibliotecas externas (excepto por imagemagick) es crear su propia solución:

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

resize = function (image) 
  var cmd = 'convert ' + image.src + 
  ' -resize ' + image.width + 'x' + image.height + '^' + 
  ' -gravity center -crop ' + image.width + 'x' + image.height + '+0+0 ' +
  image.dst;

  exec(cmd, function(error, stdout, stderr) 
    if(error) 
      console.log(error);
    
  );

Y luego llámalo:

resize(
    src: sourceFile,
    dst: destinyFile,
    width: 320,
    height: 240
);

Permitirá tus parámetros personalizados de calidad, recorte, marca de agua, etc…

Si crees que ha sido de utilidad nuestro artículo, sería de mucha ayuda si lo compartes con el resto desarrolladores y nos ayudes a dar difusión a nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *