RMagick Image text question

8 views
Skip to first unread message

Zhan Tuaev

unread,
Oct 29, 2008, 5:27:22 AM10/29/08
to rubyonra...@googlegroups.com
Hi there!
I'm studying RMagick graphics manipulation gem, and I need to put small
text about size 8 to 11 px on pictures. I found that text() method
prints quite blurred text. And I could not get clear text chosing
different values for methods font, font_family, font_style, font_weigth.

I attached a picture. In the left of it you can see what RMagick
generates for me and in the right you can see the example of clear text
I need RMagick to generate for me.

What can I do to get clear text. Any ideas?

Attachments:
http://www.ruby-forum.com/attachment/2862/Image_text.png

--
Posted via http://www.ruby-forum.com/.

Zhan Tuaev

unread,
Oct 29, 2008, 5:44:26 AM10/29/08
to rubyonra...@googlegroups.com
Zhan Tuaev wrote:
> Hi there!
> I'm studying RMagick graphics manipulation gem, and I need to put small
> text about size 8 to 11 px on pictures. I found that text() method
> prints quite blurred text. And I could not get clear text chosing
> different values for methods font, font_family, font_style, font_weigth.
>
> I attached a picture. In the left of it you can see what RMagick
> generates for me and in the right you can see the example of clear text
> I need RMagick to generate for me.
>
> What can I do to get clear text. Any ideas?

Here is my code:

gc.stroke_width(1)
gc.pointsize(10)
gc.stroke('black')
gc.font_style(Magick::NormalStyle)
gc.font_weight(Magick::LighterWeight)
gc.text(x,y, "12:00")

Jim

unread,
Oct 29, 2008, 10:57:29 AM10/29/08
to Ruby on Rails: Talk
In my text drawing, I set stroke to transparent and fill to the
desired text color. Also, you could try turning off antialiasing. I
ended up using anti-aliasing, but rendering the text at double size
and scaling down for acceptable results.

Zhoran Tvalve

unread,
Oct 29, 2008, 11:13:20 AM10/29/08
to rubyonra...@googlegroups.com

Hi, Jim!
how can I turn off anti-aliasing?

I tried to call / not to call methods fill() and stroke().
result is different in all cases:

gc.fill('black') #results in:


Attachments:
http://www.ruby-forum.com/attachment/2863/fill_only.png

Zhoran Tvalve

unread,
Oct 29, 2008, 11:15:15 AM10/29/08
to rubyonra...@googlegroups.com
> I tried to call / not to call methods fill() and stroke().
> result is different in all cases:
>
> gc.fill('black') #results in:

#gc.fill('black') # call is commented out
gc.stroke('black') # results in:

Attachments:
http://www.ruby-forum.com/attachment/2864/stroke_only.png

Zhoran Tvalve

unread,
Oct 29, 2008, 11:16:54 AM10/29/08
to rubyonra...@googlegroups.com
Zhoran Tvalve wrote:
>> I tried to call / not to call methods fill() and stroke().
>> result is different in all cases:
>>
>> gc.fill('black') #results in:
>
> #gc.fill('black') # call is commented out
> gc.stroke('black') # results in:

gc.fill('black')
gc.stroke('black') # calling both results in:

Attachments:
http://www.ruby-forum.com/attachment/2865/stroke___fill.png

Zhoran Tvalve

unread,
Oct 29, 2008, 11:21:14 AM10/29/08
to rubyonra...@googlegroups.com
Zhoran Tvalve wrote:
> Zhoran Tvalve wrote:
>>> I tried to call / not to call methods fill() and stroke().
>>> result is different in all cases:
>>>
>>> gc.fill('black') #results in:
>>
>> #gc.fill('black') # call is commented out
>> gc.stroke('black') # results in:
>
> gc.fill('black')
> gc.stroke('black') # calling both results in:


Сomparing these three pictures you can see, that calling both methods
stroke() and fill() makes best picture, but I still need better.
Something like at attached picture (I used pixel editor :) to prepare
it)

And It seems to me that scaling down could not make accurate symbols.

Attachments:
http://www.ruby-forum.com/attachment/2866/needed.png

Jim

unread,
Oct 29, 2008, 12:32:26 PM10/29/08
to Ruby on Rails: Talk
I would have something like:

gc.stroke('transparent').stroke_antialias(false)
gc.fill('black')

The stroke_width setting won't have any effect on the text. I also
never saw any variation from using the font_style or font_weight
settings. I'm not sure if turning off antialiasing has any effect on
text, since I now have that commented out in my code. I still turn
off antialiasing when drawing lines because I only draw rectangles.
On an angled line you might need it.

The font you choose may also have something to do with it. Run

convert -list font

at the command line to see the available fonts and families on your
system.


Jim Crate
Que Viva Development

Zhoran Tvalve

unread,
Oct 30, 2008, 10:23:09 AM10/30/08
to rubyonra...@googlegroups.com


Hi, Jim!
It really works!! I just turned off antialiasing and got it!!!
Please take a look at the pictures. That is what I needed.
Thank you for your help!


Attachments:
http://www.ruby-forum.com/attachment/2873/1.png

Zhoran Tvalve

unread,
Oct 30, 2008, 10:24:59 AM10/30/08
to rubyonra...@googlegroups.com
Good luck, Jim ;)

Attachments:
http://www.ruby-forum.com/attachment/2874/2.png

Zhoran Tvalve

unread,
Oct 30, 2008, 11:49:23 AM10/30/08
to rubyonra...@googlegroups.com
Zhoran Tvalve wrote:
> Hi, Jim!
> It really works!! I just turned off antialiasing and got it!!!
> Please take a look at the pictures. That is what I needed.
> Thank you for your help!

One note more.
I've checked again and found that result defends on both callings
@gc.stroke('transparent').stroke_antialias(false)
@gc.text_antialias = false

the best result (which I showed upper) produced by calling both methods.

Jim

unread,
Oct 30, 2008, 1:58:01 PM10/30/08
to Ruby on Rails: Talk
hmm...I never noticed the text_antialias method before. I'll have to
remember that the next time I run into issues.

Glad I could help!

Jim

James Derryl

unread,
Nov 2, 2015, 12:22:14 AM11/2/15
to rubyonra...@googlegroups.com
You can use this article on Image Manipulation to clear your query. This
article may prove to be of your help.

http://www.railscarma.com/blog/technical-articles/image-manipulation/
Reply all
Reply to author
Forward
0 new messages