Question

I want to add text on an image at specific point and want it be centre aligned. How can I specify to margin from top? I want to specify margin in pixels/inches from top.

Currently I am using this command:

 convert temp.jpg -gravity Center  -pointsize 30 -annotate 0 'Love you mom' temp1.jpg 

it is writing text in centre of image. I want text to move to top.

This is what I am getting: enter image description here

This is what i want: enter image description here

Was it helpful?

Solution

Try using -gravity North (this will move your text to the top of the image) and then adding an offset (-annotate +0+100) to move down your text:

convert temp.jpg -gravity North -pointsize 30 -annotate +0+100 'Love you mom' temp1.jpg 

OTHER TIPS

Instead, you can use -draw to specify the location you want your text.

For example:

convert -font helvetica -fill white -pointsize 60 -gravity center -draw "text 0,300 'TEXT TO BE DISPLAYED'" /image_address/Image_input.png /image_address/Image_output.png 

In this case, 0 is de x coordinate and 300 is the y coordinate, however the x coordinate is not really important since the -gravity center is already there.

Remember that the coordinate 0,0 is the top left corner.

convert -pointsize 40 -fill blue -draw 'text 600,600 "Love You Mom"' temp1.jpg temp2.jpg
                                              ^   ^
                                              |   |
                                        From Left |
                                                From Top

There are a few ways to add text on an image. Here is the answer using Magick.NET using C#:

  1. Using the Annotate() function:

    image.Annotate(someText, new MagickGeometry(x, y, width, height), Gravity.Center)
    
  2. Using a combination of Composite function and new MagickImage("caption:...") functionality. You can basically overlay an image on top of another image. You can create a text caption image which will be placed on top of the original image:

    MagickReadSettings readSettings = new MagickReadSettings()
    {
       Font = someFont,
       Width = 868,
       Height = 180,
       TextGravity = Gravity.North
    };
    using (var overlayImage = new MagickImage("caption:" + someText, readSettings))
    {
        originalImage.Composite(overlayImage, Gravity.South, x, y);
    }
    
  3. Using DrawableText you can draw text anywhere on the image:

    DrawableTextAlignment centerAligned = new DrawableTextAlignment(TextAlignment.Center);
    DrawableText drawableText = new DrawableText(x, y, someText);
    image.Draw(drawableText, centerAligned);
    
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top