Imagemagick images next to each other with proper margin

那年仲夏 提交于 2020-02-02 17:29:45

问题


I am trying to create a png file with a transparent background, in which I put images next to each other.

My command so far is this:

convert --% -bordercolor none -background none -gravity center logo.png -border 5x5 ( img1.jpg img2.jpg img3.jpg -border 5x5 +append ) ( img4.jpg img5.jpg img6.jpg -border 5x5 +append ) -append -border 5x5 -resize 720x480 output.png

it creates me this image

how do I have to change my command to make the image appear as following?

(I made the background grey so one can see the white text, the background shall be transparent later on)

I tried Mark Setchells suggestion the command so far looks like this:

convert -background none -bordercolor none -gravity west \
C:\xampp\htdocs\app\storage\images\Img_1.jpg label:"1" +swap -append label:"text 1" -append -write miff:- +delete \
C:\xampp\htdocs\app\storage\images\Img_2.jpg label:"2" +swap -append label:"text 2" -append -write miff:- +delete \
C:\xampp\htdocs\app\storage\images\Img_3.jpg label:"3" +swap -append label:"text 3" -append -write miff:- +delete \
C:\xampp\htdocs\app\storage\images\Img_4.jpg label:"4" +swap -append label:"text 4" -append -write miff:- +delete \
C:\xampp\htdocs\app\storage\images\Img_5.jpg label:"5" +swap -append label:"text 5" -append -write miff:- +delete \
C:\xampp\htdocs\app\storage\images\Img_6.jpg label:"6" +swap -append label:"text 6" -append miff:- |
montage -set label '' miff:- -background pink -tile 3x2 -geometry +15+5 miff:- |
convert -size 800x500 xc:gray80 -gravity center miff:- -composite -gravity north C:\xampp\htdocs\app\storage\images\logo.png -geometry +0+30 -composite C:\xampp\htdocs\app\storage\images\result.png

回答1:


You can do it many ways. Here is one:

Method 1

#!/bin/bash
convert -background none -bordercolor none -gravity west \
   \( 1.png label:"1" +swap -append label:"text 1" -append -border 5x5 \) \
   \( 2.png label:"2" +swap -append label:"text 2" -append -border 5x5 \) +append \
   \( 3.png label:"3" +swap -append label:"text 3" -append -border 5x5 \) +append \
 \( \
   \( 4.png label:"4" +swap -append label:"text 4" -append -border 5x5 \) \
   \( 5.png label:"5" +swap -append label:"text 5" -append -border 5x5 \) +append \
   \( 6.png label:"6" +swap -append label:"text 6" -append -border 5x5 \) +append \
 \) -append  \
 -gravity center -extent 800x550 \
 -gravity north logo.png -geometry +0+30 -composite result.png

Method 2

This way you can use the first convert command to put the labels above and below each image and then stream all 6 labelled images into montage to do the grid layout (on pink) for you and from there back into another convert to create the gray background canvas and write the logo on at the top.

#!/bin/bash
convert -background none -bordercolor none -gravity west \
   1.png label:"1" +swap -append label:"text 1" -append -write miff:- +delete \
   2.png label:"2" +swap -append label:"text 2" -append -write miff:- +delete \
   3.png label:"3" +swap -append label:"text 3" -append -write miff:- +delete \
   4.png label:"4" +swap -append label:"text 4" -append -write miff:- +delete \
   5.png label:"5" +swap -append label:"text 5" -append -write miff:- +delete \
   6.png label:"6" +swap -append label:"text 6" -append miff:- |
   montage -set label '' miff:- -background pink -tile 3x2 -geometry +15+5 miff:- |
   convert -size 800x500 xc:gray80 -gravity center miff:- -composite -gravity north logo.png -geometry +0+30 -composite result.png

Sorry, I have no idea or understanding why Windows is so poor at parsing the command, but after much fiddling around, the following seems to work - I have no idea why!

convert -background none -bordercolor none -gravity west ^
   1.png label:"1" +swap -append label:"text 1" -append -write miff:- +delete ^
   2.png label:"2" +swap -append label:"text 2" -append -write miff:- +delete ^
   3.png label:"3" +swap -append label:"text 3" -append -write miff:- +delete ^
   4.png label:"4" +swap -append label:"text 4" -append -write miff:- +delete ^
   5.png label:"5" +swap -append label:"text 5" -append -write miff:- +delete ^
   6.png label:"6" +swap -append label:"text 6" -append miff:- | montage -set label "" miff:- ^
   -background pink -tile 3x2 -geometry +15+5 miff:- | convert -size 800x500 ^
   xc:gray80 -gravity center miff: -composite -gravity north logo.png -geometry +0+30 -composite result.png


来源:https://stackoverflow.com/questions/40279876/imagemagick-images-next-to-each-other-with-proper-margin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!