简体   繁体   中英

How can i force the imagemagick module of nodejs to output one single image only?

I am using the imagemagick module with Nodejs

im  = require('imagemagick');

The imagemagick module uses the imagemagick command line tools. I use the convert method to crop an image

im.convert([image_path, '-crop', '200x150', '-gravity', 'center', target_path],
  function(err, stdout){}
);

This results in two images. The one with the cropped image area - the second with the image garbage i tried to get rid of.

How can i force imagemagick to output one image file only?

Per the imagemagick documentation for cropping, which is admittedly a little obtuse (emphasis added):

The width and height of the geometry argument give the size of the image that remains after cropping, and x and y in the offset (if present) gives the location of the top left corner of the cropped image with respect to the original image .

...

If the x and y offsets are present, a single image is generated , consisting of the pixels from the cropping region.

...

If the x and y offsets are omitted, a set of tiles of the specified geometry, covering the entire input image, is generated.

... so, you just need to specify your x and y offsets as part of your geometry argument, like so: 200x150-100-75

Notice that I've specified -100 and -75 for the upper left corner of your crop region, this is because you set your gravity to center , but it appears that imagemagick tries to intelligently determine the appropriate distance target based on your gravity, and I don't see exactly how it behaves when you choose center . So you may have to play around with this one a bit, or you could omit the gravity and use the actual offset from the top left corner of your original image.

我必须使用+delete参数从图像序列中删除最后一个图像。

im.convert([image_file.path, '-crop', geometry, '+delete', thumb_path], ...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM