#terminal #imagemagick
Вопрос:
Я пытаюсь добавить файл PNG в качестве фона к изображению PNG с прозрачными областями, используя ImageMagick следующим образом:
convert input.png -texture bg.png output.png
Я не так далеко зашел, чтобы узнать, как заполнить мой фон до 100% ширины / высоты, потому что приведенный выше пример не работает. В итоге я получаю один и тот же файл, который прозрачен, и я не знаю почему.
Как я могу применить фон, который использует полную ширину/высоту по всему файлу? (Предпочтительно использовать метод обложки, что означает сохранение соотношения сторон фона и перекрытия вырезов)
Ответ №1:
Если вы хотите выделить фон, то в Unix попробуйте
convert input.png ( clone -tile bg.png -draw "color 0,0 reset" ) swap -compose over -composite output.png
На окнах:
convert input.png ( clone -tile bg.png -draw "color 0,0 reset" ) swap -compose over -composite output.png
Если вы просто хотите изменить размер фона, то в Unix попробуйте
dims=$( convert input.png -format "%wx%h" info: )
convert input.png ( bg.png -resize $dims repage ) swap -compose over -composite output.png
Я не настолько хорошо знаю Windows, чтобы рассказать вам, как сделать переменную
В ImageMagick 7, в Unix, вы можете сделать это проще, так как:
magick input.png -set option:dims "%wx%h" ( bg.png -resize "%[dims]" ) swap -compose over -composite output.png
Или в окнах:
magick input.png -set option:dims "%wx%h" ( bg.png -resize "%[dims]" ) swap -compose over -composite output.png
Комментарии:
1. Это позволит поместить фон за изображением, но оно не будет отцентрировано и масштабировано с помощью метода обложки. В моем случае фон больше, поэтому он не совпадает. Кроме того, я хотел бы получить объяснение этих шагов. (Ваш ответ лучше, чем ничего, так как я могу изменить размер верхнего изображения в соответствии с размером фона, так что, тем не менее, спасибо за это.)
2. Команда разбивает его на плитки. Вы не объяснили ясно, чего вы хотите. Изменить размер будет другой командой. Я опубликую это.