2

我有一堆图像,分辨率不同。还有横向和纵向图片的混合。我需要将图像大小调整为一种分辨率(1024x768)。如果我有一张纵向图片,最大高度需要为 768,而我的横向图片必须有最大宽度为 1024。

结束的空间,必须变黑。现在我用mogrify -resize 1024x768 -verbose *.jpg

我知道我可以使用 1024x!768 ,但就像我说的那样,我使用的是不同类型的图片。我的 exif 信息也不包含有关图片是否为横向的信息。

4

2 回答 2

1

我使用 ImageMagick 来完成这些任务。安装后,您有“转换”命令,这是很常见的,并且可以轻松完成您的任务。

于 2011-01-21T19:38:06.310 回答
0

您必须裁剪图像以获得相同的纵横比,然后您可以调整图像大小以获得所需的分辨率。使用 nodejs(imagemagick 命令行工具)的示例代码:

var width = 166;
var height = 117;
var ratio_new = width/height;
var ratio_old = image_file.width_orig/image_file.height_orig;
var pixels_too_much = 0;
var geometry = '';

if (ratio_old > ratio_new)
{
    config.debug && console.log ("remove horizontal pixel!");
    pixels_too_much = parseInt(image_file.width_orig - (image_file.height_orig * ratio_new))-1;
    geometry = parseInt(image_file.height_orig * ratio_new + 0.5) + 'x' + image_file.height_orig;
    geometry += "+" + parseInt(pixels_too_much/2) + "+0\!";
}
else if (ratio_old < ratio_new)
{
    config.debug && console.log ("remove vertikal pixel");
    pixels_too_much = parseInt(image_file.height_orig - (image_file.width_orig / ratio_new));
    geometry = image_file.width_orig + 'x' + (image_file.width_orig / ratio_new);
    geometry += "+0+" + parseInt(pixels_too_much/2)+"\!";
}
im.convert([image_file.path, '-crop', geometry, '-resize', width + 'x' + height, thumb_path],function(){});
于 2014-05-14T10:52:39.157 回答