Закруглённые углы при помощи ImageMagick
Просто и быстро
Постановка задачи: есть несколько тысяч картинок-миниатюр с прямыми углами. Необходимо преобразовать их таким образом, чтобы углы были закруглёнными.
Кто-то будет писать PHP-скрипт, кто-то — использовать PhotoShop, а для любителей командной строки и ImageMagick есть более простое решение.
Итак, пусть у нас имеется такое исходное изображение (размер изображения — 96×96, но для описываемого метода это не важно):
Для начала нам надо рассчитать параметры рамки:
Высота и ширина берутся непосредственно из файла, а результаты вычислений сохраняются в файле формата Magick Vector Graphics и будут использоваться далее. Перед проведением вычислений к файлу добавляется двухпиксельная рамка. Таким образом, размер изображения с рамкой (концы которой будут закругляться) составит 100×100.
Теперь нам нужно сгенерировать оверлей и маску:
convert source.png -border 2 -matte -channel RGBA -threshold -1 -background none -fill white -stroke black -strokewidth 1 -draw "@rounded_corner.mvg" mask.png
Оверлей представляет собой рамку с закругленными концами, которая будет накладываться на исходное изображение. Маска же используется для стирания лишних частей изображения. Ширина штриха маски меньше ширины штриха оверлея: хотя будет стёрто чуть большее по площади изображение, края изображения будут сглажены должным образом. Цвет рамки задаётся в параметре stroke.
Для изображений одного размера оверлей и маска будут одинаковыми. Поэтому при обработке большого количества изображений есть смысл генерировать их один раз.
Формируем окончательное изображение:
Получим следующее изображение:

Над изображением можно извратиться и получить более красивую рамку:
Есть еще один способ закругления углов (в этом случае ни маска, ни оверлей не нужны):
Как обработать коллекцию файлов? В Linux это просто: я приведу общий случай:
PS — а еще можно и тень добавить:
Вложения:
- soft_edge (image/png)
- soft_edge_rb (image/png)
- rounded_border (image/png)
- me (image/png)
Янв
2009
Комментарии к статье «Закруглённые углы при помощи ImageMagick» (18) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Закруглённые углы при помощи ImageMagick»
गते गते पारगते पारसंगते बोधि स्वाहा



Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


Спасибо. Не мог понять в чём дело – оказывается в двойных процентах под Windows.
А вот под Linux почему-то не сработало, после первой команды генерируется файл с таким содержимым
roundrectangle 1,1 , ,
А где можно взять эту программку – очень занимательно получается
http://www.imagemagick.org/script/download.php