Forum: Ruby Tk supports only GIF?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
699c00ad35f2755810b4aa5f423d73e2?d=identicon&s=25 Albert Schlef (alby)
on 2009-01-22 14:00
I has this snippet to show images:

  require 'tk'

  TkLabel.new do
    image TkPhotoImage.new('file'=> 'world.gif')
  end.pack

  Tk.mainloop

But if I point it to some PNG or JPEG file, I get a "couldn't recognize
data in image file" exception. If I add an explicit 'format' => 'png', I
get a "image file format 'png' is not supported" exception.

I'm using Ubuntu.

Doesn't Tk support JPGs and PNGs out of the box?
E4f967492dbd03c526cc9b397e68021d?d=identicon&s=25 Hidetoshi NAGAI (Guest)
on 2009-01-22 18:00
(Received via mailing list)
From: Albert Schlef <albertschlef@gmail.com>
Subject: Tk supports only GIF?
Date: Thu, 22 Jan 2009 21:58:54 +0900
Message-ID: <2b90a2596885e3d7547061766483c3ea@ruby-forum.com>
> I'm using Ubuntu.
>
> Doesn't Tk support JPGs and PNGs out of the box?

If you talk about standard Tcl/Tk only, the answer is "YES"
(see "man n photo").
To support JPEGs, PNGs, and so on, Tcl/Tk needs "Img" extension.

# Possibly, ubuntu package name is "libtk-img".

When your Tcl/Tk has "Img" extension, Ruby/Tk also supports it.
Please call "require 'tkextlib/tkimg'", and you can use JPEGs and
PNGs on your Ruby/Tk.
699c00ad35f2755810b4aa5f423d73e2?d=identicon&s=25 Albert Schlef (alby)
on 2009-01-25 00:09
Hidetoshi NAGAI wrote:
> Possibly, ubuntu package name is "libtk-img".
> [...]
> Please call "require 'tkextlib/tkimg'"


Thanks! these two tips solved my problem.


> > Doesn't Tk support JPGs and PNGs out of the box?
>
> If you talk about standard Tcl/Tk only, the answer is "YES"


BTW, I'm not sure I understand what you wrote here. (What does "standard
Tcl/Tk mean?)
E4f967492dbd03c526cc9b397e68021d?d=identicon&s=25 Hidetoshi NAGAI (Guest)
on 2009-01-25 21:03
(Received via mailing list)
From: Albert Schlef <albertschlef@gmail.com>
Subject: Re: Tk supports only GIF?
Date: Sun, 25 Jan 2009 08:07:29 +0900
Message-ID: <ddbb60ec29321d9b7169b8aa82ccc225@ruby-forum.com>
> > If you talk about standard Tcl/Tk only, the answer is "YES"
> BTW, I'm not sure I understand what you wrote here. (What does "standard
> Tcl/Tk mean?)

I'm sorry about my poor English.
I said it as "Tcl/Tk with no extension".

As you know, Ruby/Tk uses Tcl/Tk libraries.
It means that functions supported by your Ruby/Tk depend on your
Tcl/Tk on your environment.

When you have no Tcl/Tk extensions on your environment,
Ruby/Tk can use Tcl/Tk's standard (built-in) widgets and functions only.
Tcl/Tk's "photo" manual describes "At present, only GIF and PPM/PGM
formats are supported".
Tcl/Tk's "Img" extension library (loadable module) adds support for
some other image formats to Tcl/Tk.
And then, Ruby/Tk can treat image formats supported by "Img" extension.

Ruby/Tk can use almost all of Tcl/Tk extensions.
For some of them, Ruby/Tk has wrapper libraries ("tkextlib/*").
For others, although there are no wrapper libraries, Ruby/Tk can call
functions of those extensions directly (by "Tk.tk_call" method),
I think that it is not so difficult to write a wrapper library for
such a extension.
699c00ad35f2755810b4aa5f423d73e2?d=identicon&s=25 Albert Schlef (alby)
on 2009-01-26 18:49
Hidetoshi NAGAI wrote:
> From: Albert Schlef <albertschlef@gmail.com>
>> BTW [...] what does "standard Tcl/Tk" mean?
>
> I said it as "Tcl/Tk with no extension".
>
> As you know, Ruby/Tk uses Tcl/Tk libraries.
> It means that functions supported by your Ruby/Tk depend on your
> Tcl/Tk on your environment.
[...]
> Ruby/Tk can use almost all of Tcl/Tk extensions.
> For some of them, Ruby/Tk has wrapper libraries ("tkextlib/*").
> For others, although there are no wrapper libraries, Ruby/Tk can call
> functions of those extensions directly (by "Tk.tk_call" method) [...]

Thank you for the thorough explanation!

(It's a pity we don't have a wiki to collect TK-related info. I did
search for one.)
D2bff075522befb15313dab85f3a671b?d=identicon&s=25 Kevin Walzer (Guest)
on 2009-01-27 18:25
(Received via mailing list)
Albert Schlef wrote:
>> For some of them, Ruby/Tk has wrapper libraries ("tkextlib/*").
>> For others, although there are no wrapper libraries, Ruby/Tk can call
>> functions of those extensions directly (by "Tk.tk_call" method) [...]
>
> Thank you for the thorough explanation!
>
> (It's a pity we don't have a wiki to collect TK-related info. I did
> search for one.)

The Tcl community itself has an excellent wiki:

http://wiki.tcl.tk

While there isn't much Ruby-specific content there, there is a huge
amount of information about Tk.
This topic is locked and can not be replied to.