带ImageMagick的方形缩略图(转换)?


Answers:


19

官方ImageMagick文档中的“将缩略图裁剪为合适”部分对此进行了说明:

替代方法是,将图像的不适合最终尺寸的部分切掉,而不是填充图像以适合我们想要的特定缩略图尺寸。

当然,这意味着您实际上会丢失原始图像的某些部分,尤其是图像的边缘,但是结果是图像中心部分的缩略图放大了。通常(但并非总是)这是图像的主要主题,因此它是缩略图创建的实用方法。

从IM v6.3.8-3开始,添加了特殊的调整大小选项标志'^',以使此操作更加容易。我们只是使用此标志来调整大小,然后裁剪掉超出所需大小的图像部分。

在示例命令的上下文中:

convert -define jpeg:size=200x200 hatching_orig.jpg  -thumbnail 100x100^ \
          -gravity center -extent 100x100  cut_to_fit.gif

7
可能...某种类型的描述?
Hello71 2011年


55

Ignacio链接到正确的文档,但是为了方便起见,我将其内嵌在此处:

convert -define jpeg:size=200x200 original.jpeg  -thumbnail 100x100^ -gravity center -extent 100x100  thumbnail.jpeg

同样,以下内容适用于GraphicsMagick:

gm convert -size 200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 +profile "*" thumbnail.jpeg

说明:

  • -size 200x200 告诉jpeg解码器,我们只需要此分辨率,这样它可以节省内存并更快地读取源图像
  • -thumbnail 100x100^ 快速调整尺寸,使最短边100
  • - gravity center 将下一个操作居中
  • -extent 100x100 将图片套用至100x100的画布
  • +profile "*" 不要将任何metainfo保存到jpeg中(使结果图像变小)

3
当我在命令行(图形魔术师之一)中使用它时,我得到了居中的图片,两个侧面都被白色填充。不是所描述的那个。难道我做错了什么?
乌穆特·本泽

2
如果您使用的是Windows,则必须将^字符加倍以对其进行转义。例如:-thumbnail 100x100 ^^
George Filippakos

3
为什么不设置100x100尺寸?
Hello World

@HelloWorld:阅读“ Imagemagick几何”。谷歌呢,这将很容易找到。
saurabheights

11

这是一种更简单的方法:

以下命令将较小的一面调整为100像素,并裁剪100x100的正方形。您可以添加-strip命令以减小文件大小。

convert original.jpg -resize "100^>" -gravity center \ 
                     -crop 100x100+0+0 -strip thumbnail.jpg

与其他人不同,它不是在尝试节省内存。相反,它可以满足您的需求,而且仅此而已。另外,它不会放大图像。


在为已确定答案的问题添加后期答案时,最好提供足够的解释,说明为什么您的答案比其他答案具有独特性和新颖性。
杰森·艾勒

2
谢谢,我不知道为什么当OP对此一无所知时,其他人却过于复杂地试图节省内存。
confused00

2

我正在使用graphicsmagick生成大小正确的缩略图,但是我使用棋盘填充图像,而不是裁剪突出部分。

gm convert -limit Threads 1 -size 320x180 pattern:checkerboard -background transparent -gravity center -resize 320x180 -extent 320x180 original.jpg -flatten -resize 112x65! -interlace Line 1 thumb_112x65.jpg

选项说明。

gm convert

// Single threaded seems faster on smaller files
-limit Threads 1 

// Generate a checkerboard of size 320x180.
// Sets the relative size of the checkerboard squares,
// also sets the desired aspect ratio. In my case (16:9)
-size 320x180 pattern:checkerboard 

// Resize the input image and center it on a transparent layer.
-background transparent -gravity center -resize 320x180 -extent 320x180 orig.jpg

// Merge the layers
-flatten 

// Resize the output to the desired
// The ! causes the aspect ratio to be ignored, fixing any rounding errors.
// (Specify a size with the same aspect ratio as the checkerboard.)
-resize 112x65! 

// Use Progressive JPEG Encoding
-interlace Line 

// Output Image
thumb_112x65.jpg

1

我认为您正在寻找类似的东西:

convert -crop 100x100+50+50 input_image.jpg output_image.jpg 

其中100x100大小最终矩形和50x50所述偏移


该裁剪图像,但不制作缩略图。
marioosh 2011年

1
@marioosh:我不明白,您可以使用convert -thumbnail 100x100+50+50 input_image.jpg output_image.jpg,有关更多信息,请参见Igancio Vazquez响应作为示例或查看文档
pconcepcion 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.