Изменение размеров изображений в стиле Facebook с использованием ImageMagick - PullRequest
3 голосов
/ 20 октября 2010

Я хотел бы изменить размеры (уменьшить масштаб) некоторых изображений так, как это делает Facebook.ImageMagick, но, эй, я открыт для предложений:)

Я полагаю, что Facebook делает это:

Скажем, у вас максимальная ширина x высота 250x200, Facebook оптимизирует использование этого,Пытается использовать как можно больше из 250x200.Если, например, вы уменьшаете изображение и получаете 220x200, то они обрезаются сверху и снизу до тех пор, пока они не используют максимально возможное количество кадра 250x200.На самом деле, я думаю, что они берут больше снизу, чем сверху (около 1: 2,5), что, как я полагаю, связано с тем, что у большинства картинок есть голова сверху, и Facebook это понимает.вид алгоритма изменения размера?И есть ли способ заставить ImageMagick сделать это?

Заранее спасибо!

Редактировать На самом деле кажется, что Facebook может не использовать эту "умную" технику изменения размера послевсе.Они просто изменяют размер, где они имеют минимальную ширину / минимальную высоту.Затем, когда они показывают изображение в своем альбоме, они обрезаются сверху / снизу или слева / справа, чтобы использовать как можно больше для кадра (по крайней мере, так я его воспринимаю).

-Tobias

1 Ответ

1 голос
/ 20 октября 2010

Вы можете использовать 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

правки: добавлены связанные ссылки, указана команда примера для выполнения аналогичной задачи со ссылкой на источник примера.

...