使用ImageMagick实现类似Facebook的图片大小调整

3
我想按照Facebook的方式调整(缩小)一些图片大小。ImageMagick可以实现,不过我也接受建议 :)
我认为Facebook是这样做的:
假设您有一个最大宽度250像素和最大高度200像素,Facebook会优化利用这个空间。尽可能使用250x200尺寸的区域。例如,如果您将图像缩小并得到220x200,则他们会从图像的顶部和底部裁切,直到尽可能多地使用250x200框架。实际上,我认为他们从底部取得更多比例,比上面多1:2.5的比例,这是因为大多数图片的头部在上面,而Facebook也意识到了这一点。
这种调整算法有没有名称?是否有办法让ImageMagick去实现这个功能?
非常感谢!
编辑:实际上Facebook似乎并没有使用这种“智能”的调整技术。他们只在有最小宽度或最小高度时进行调整。当他们在相册中显示图像时,他们会从顶部/底部或左侧/右侧裁剪,以尽可能多地使用框架(至少我是这么理解的)。
-Tobias

你在用什么编程语言?根据情况,有很多有用的库可以帮助你完成这种任务。 - fish2000
服务器端JavaScript。但似乎ImageMagick是一个不错的选择。 - freeall
Facebook让你选择你的脸在哪里,然后它只是进行简单的调整大小。 - erjiang
1个回答

1

您可以使用ImageMagick获取图像的尺寸,然后进行缩放和裁剪。至于您是否准确地描述了Facebook使用的算法,我不知道。

我认为以下链接解决了您要解决的问题:

http://www.imagemagick.org/Usage/resize/#space_fill

他们在最后给出的例子是...

convert logo: \
      -resize 160x -resize 'x160<'   -resize 50% \
      -gravity center  -crop 80x80+0+0 +repage   space_fill_2.jpg

该命令将图像调整为160像素宽,调整为160像素高,取两个调整后的图像中较大的一个并缩小一半,然后将其裁剪为80x80。

以下内容可能会对您有所帮助:

http://www.google.com/search?q=image+entroy+cropping

我已经阅读了几篇关于使用图像熵来选择要裁剪的图像部分的文档。

另一个相关链接 -

Django,sorl-thumbnail裁剪图片头

编辑:添加相关链接,指定执行类似任务的示例命令,并提供示例来源的链接。


我主要是在寻找一个单一的命令来完成它,这样我就可以只使用流进行即时处理。让ImageMagick进行调整大小,但尽可能填充我给出的边界框。 - freeall
我不知道有这样的命令,也不知道为什么他们会包含这样的命令。ImageMagick应该是通用图像处理工具。它的目的不是实现所有可能的图像操作。也许你可以使用ImageMagic库或其他图像处理库来制作一个特定的工具来完成这个任务。 - EMPraptor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接