Hello,
I am generating an image from input text:
convert -channel RGBA -density 196 -background none -fill blue -font Times -pointsize 10 -size 400x400 -gravity North -bordercolor none -border 3 caption:'message' temp.png
This creates an image for me with the string message, of size 400x400, and transparent background. I don't care about the size of this temp image, it will contain a string of between 100 and 200 characters each time. I just want it to be text on transparent background for pasting onto another image.
This text must be placed over a background image, centered at the top but not all the way at the top, and with margins. The text itself I would like to be justified. The background image is 400x400 and must remain this size.
composite -tile background.png temp.png -compose DstOver result.png.
This is working, however the text image is just placed at the very top, per the Gravity North directive. I would like to be able to place the text more specifically on the background image, with margins/paddig.
I've tried all sorts of additional options to both the convert and composite commands (-geometry 400x400+10+10 or -geometry 400x400+40+40 or -region 400x400+40+40, using 300x300 instead of 400 for size/region/geometry, and placing the options after convert, after composite, after composite but before -compose.. using positive and negative offsets, etc.
Bottom line I don't know enough about these commands and am just looking for a one-off solution that works for my simple problem.
I would really appreciate if this is easy/simple for anyone to point out how to accomplish the placement, or better yet provide the convert and composite commands required.
Thanks!
Simple Put Alpha Text Image over Background Image
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: Simple Put Alpha Text Image over Background Image
This is not well formed for IM 6, though may still work. It probably should be something more likeconvert -channel RGBA -density 196 -background none -fill blue -font Times -pointsize 10 -size 400x400 -gravity North -bordercolor none -border 3 caption:'message' temp.png
convert -size 400x400 -background none -fill blue -font Times -pointsize 10 -gravity North caption:'message' -bordercolor none -border 3 -density 196 temp.png
-channel RGBA is not really necessary though does not hurt. But the border and density should be done after creating the caption:
I am not sure why you need the 3 pixel border, unless your pointsize is so large that it makes the text bigger than 400x400.
You will likely need to use convert rather than composite to get the -geometry and -gravity settings to work. And also to use -tile you need to specify the size.composite -tile background.png temp.png -compose DstOver result.png.
This is working, however the text image is just placed at the very top, per the Gravity North directive. I would like to be able to place the text more specifically on the background image, with margins/paddig.
convert \( -size 400x400 tile:background.png \) temp.png -gravity ... -geometry ... -compose over -composite result.png
In fact, you can do both steps at once using parenthesis processing:
Code: Select all
convert \( -size 400x400 tile:background.png \) \
\( -size 400x400 -background none -fill blue -font Times -pointsize 10 -gravity North caption:'message' \
-bordercolor none -border 3 -density 196 \) \
-gravity ... -geometry ... -compose over -composite result.png
see
http://www.imagemagick.org/Usage/canvas/#tile
http://www.imagemagick.org/Usage/layers/#convert
http://www.imagemagick.org/Usage/basics/#parenthesis
If we had links to your images, it would be easier to get the syntax just right and to understand about your temp.png image creation.
Last edited by fmw42 on 2013-08-14T19:28:47-07:00, edited 1 time in total.
Re: Simple Put Alpha Text Image over Background Image
wow, this is exactly what I was looking for. great stuff, thanks!! I'm going to try it out, thx for the links as well
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: Simple Put Alpha Text Image over Background Image
I forgot to mention that if you try to offset the overlay image and it is the same size as the tiled background image, it likely will get cutoff by using -composite. You should use -trim +repage on the image of text so that it its size is just around the text. Then you can overlay it with offsets via -gravity and -geometry.