3

我想以 Facebook 的方式调整(缩小)一些图像的大小。ImageMagick,但是,我愿意接受建议 :)

我相信 Facebook 正在这样做:

假设您的最大宽度 x 高度为 250x200,Facebook 正在优化它的使用。尝试尽可能多地使用 250x200。例如,如果您缩小图像并获得 220x200,那么他们会从图像的顶部和底部剪切,直到尽可能多地使用 250x200 帧。实际上,我认为他们从底部获取更多,而不是顶部(大约 1:2.5),我相信这是因为大多数图片的头部都在顶部,而 Facebook 意识到了这一点。

这种大小调整算法有什么名字吗?有没有办法让 ImageMagick 做到这一点?

提前致谢!

编辑 实际上,Facebook 可能根本不会采用这种“智能”调整大小的技术。他们只是在有最小宽度/最小高度的地方调整大小。然后,当他们在相册中展示图片时,他们会从顶部/底部或左侧/右侧切入,以尽可能多地使用框架(至少我是这样认为的)。

-托拜厄斯

4

1 回答 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 裁剪图片头

编辑:添加了相关链接,指定了用于执行类似任务的示例命令,并链接到示例源。

于 2010-10-19T22:53:56.603 回答