Metrics rmagick problem

I get a strange rmagick result.

I need to add a centered text to image.
Draw#inspect tell me that all is good, but on result image text isn’t
centered.

See Parked at Loopia
for code and link to result image.

Thanks for any help in advance.

Eduard Bondarenko wrote:

I get a strange rmagick result.

I need to add a centered text to image.
Draw#inspect tell me that all is good, but on result image text isn’t
centered.

See Parked at Loopia
for code and link to result image.

Thanks for any help in advance.

You’re working too hard :slight_smile: Use gravity(Magick::CenterGravity), like the
example for composite_layers:
http://studio.imagemagick.org/RMagick/doc/ilist.html#composite_layers.

Thanks Tim,

But centerGravity don’t works as expects.
I’ve added
d.gravity = Magick::CenterGravity

and changed
d.text(0,0, text)

but the text isn’t in the image center.
annotate give the same result.

Best regards,
Eduard

Tim H. wrote:

Eduard Bondarenko wrote:

I get a strange rmagick result.

I need to add a centered text to image.
Draw#inspect tell me that all is good, but on result image text isn’t
centered.

See Parked at Loopia
for code and link to result image.

Thanks for any help in advance.

You’re working too hard :slight_smile: Use gravity(Magick::CenterGravity), like the
example for composite_layers:
http://studio.imagemagick.org/RMagick/doc/ilist.html#composite_layers.

Eduard Bondarenko wrote:

annotate give the same result.

Sorry this is so much trouble.

Try this. For me, this exactly centers the word “RMagick” on the image.
I’m using ImageMagick 6.4.0 and RMagick 2.3.0, but I would expect this
to work with any relatively recent version of ImageMagick and RMagick.
If it doesn’t work for you, please open a support request on the RMagick
project on RubyForge, let me know what versions of ImageMagick and
RMagick you’re using, include a simple reproduction of your problem and
attach the output image you get.

require ‘RMagick’

img = Magick::Image.new(500, 500)

gc = Magick::Draw.new
gc.stroke “red”
gc.fill “white”
gc.circle 249.5, 249.5, 249.5, 255
gc.line 0, 0, 499, 499
gc.line 0, 499, 499, 0
gc.draw img

translucent_blue = Magick::Pixel.from_color “blue”
translucent_blue.opacity = Magick::QuantumRange * 0.50
translucent_blue = translucent_blue.to_color(Magick::AllCompliance,
true)

gc = Magick::Draw.new
gc.gravity Magick::CenterGravity
gc.text_undercolor translucent_blue
gc.pointsize 48
gc.fill “rgba(100%, 100%, 100%, 0.50)”
gc.text 0, 0, “RMagick”
gc.draw img

img.matte = false
img.display

ImageMagick 6.4.0 03/28/08 Q16
rmagick (2.3.0)
Rails 2.0.2

I guess I found a problem.
When I change Image.read to Image.new
with the same dimensions text written at the
desired location.

SOLUTION (possible):
image.page was not right.
public/print_images/bc5085fc45bb5697aec6e181e33ebe78.png PNG 535x535
768x768+177+79 DirectClass 16-bit 68kb
width=768, height=768, x=177, y=79
width=535, height=535, x=0, y=0

I assign image.page to new Rectangle.
Is there any better solution?

Thanks a lot Tim!

Tim H. wrote:

Eduard Bondarenko wrote:

annotate give the same result.

Sorry this is so much trouble.

Try this. For me, this exactly centers the word “RMagick” on the image.
I’m using ImageMagick 6.4.0 and RMagick 2.3.0, but I would expect this
to work with any relatively recent version of ImageMagick and RMagick.
If it doesn’t work for you, please open a support request on the RMagick
project on RubyForge, let me know what versions of ImageMagick and
RMagick you’re using, include a simple reproduction of your problem and
attach the output image you get.

require ‘RMagick’

img = Magick::Image.new(500, 500)

gc = Magick::Draw.new
gc.stroke “red”
gc.fill “white”
gc.circle 249.5, 249.5, 249.5, 255
gc.line 0, 0, 499, 499
gc.line 0, 499, 499, 0
gc.draw img

translucent_blue = Magick::Pixel.from_color “blue”
translucent_blue.opacity = Magick::QuantumRange * 0.50
translucent_blue = translucent_blue.to_color(Magick::AllCompliance,
true)

gc = Magick::Draw.new
gc.gravity Magick::CenterGravity
gc.text_undercolor translucent_blue
gc.pointsize 48
gc.fill “rgba(100%, 100%, 100%, 0.50)”
gc.text 0, 0, “RMagick”
gc.draw img

img.matte = false
img.display

Eduard Bondarenko wrote:

image.page was not right.
public/print_images/bc5085fc45bb5697aec6e181e33ebe78.png PNG 535x535
768x768+177+79 DirectClass 16-bit 68kb
width=768, height=768, x=177, y=79
width=535, height=535, x=0, y=0

I assign image.page to new Rectangle.
Is there any better solution?

That’s the best solution.