ImageMagick: положить частично прозрачную плитку поверх изображения - PullRequest
4 голосов
/ 18 августа 2011

У меня есть wallpaper.jpg (размер: 1920x1280) и частично прозрачный tile.gif (размер: 16x16).

На веб-сайте я хочу, чтобы мозаика повторялась по x и yналожение поверх обоев.

Прямо сейчас это наложение реализовано с использованием CSS.Я хочу сохранить один запрос и объединить (повторный) файл tile.png с файлом wallpaper.jpg с помощью ImageMagick.В любом случае, файл wallpaper.jpg создается с помощью ImageMagick.

Следуя документации опции -tile , я получил следующую команду:

convert wallpaper.jpg -size 1920x1280 tile:tile.gif -compose over -composite result.jpg

РезультатТем не менее, это JPG 1920x1280, заполненный плиткой, но обои не просвечивают.Вместо этого прозрачная часть плитки выглядит белой.

Документация гласит:

Если изображение плитки частично прозрачно, тогда метод "Over" "-compose" будетнужно указать.

Так что же не так?

Я также пробовал -flatten вместо -composite ... тот же результат.

edit: я понимаю,есть также другая опция документации .Кажется, следуют концепции перегрузки.К сожалению, я не могу понять, как правильно его использовать.

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Это должно сработать:

convert wallpaper.jpg -background none -size 1920x1280 tile:tile.gif -composite result.jpg

(вы также можете добавить -compose over, но это не должно иметь никакого значения).

1 голос
/ 18 августа 2011

Не уверен, поможет ли это, но пытались ли вы преобразовать файл tile.gif в 24-битный файл PNG с альфа / прозрачностью? - Поцарапайте это ....

Я нашел пример, показывающий, но не уверен насчет полной командной строки:

composite -tile tile.gif netscape: wallpaper.jpg

Источник: http://www.imagemagick.org/Usage/compose/#tile

...