RubyTk - tkimg fails to import?


In order to use PNG files with RubyTk I need to import the ‘tkimg’
library (or so I’m told). However, every time I do so, I get an error
message and it fails to import. In IRB I get the following:

require ‘tk’
=> true
require ‘tkextlib/tile’
=> true
require ‘tkextlib/tkimg’
RuntimeError: TkPackage can’t find package Img
from C:/Ruby193/lib/ruby/1.9.1/tk/package.rb:86:in rescue in require' from C:/Ruby193/lib/ruby/1.9.1/tk/package.rb:83:in require’
from C:/Ruby193/lib/ruby/1.9.1/tkextlib/tkimg.rb:16:in <top (required)>' from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in require’
require' from (irb):4 from C:/Ruby193/bin/irb:12:in

I’ve looked inside the tkextlib folder and poked around with the
tkimg.rb and within the tkimg folder with no success.

I’m currently using ruby 1.9.3p429 via the windows ruby installer
I’ve tried the newest 2.0 (both x86 and x64 versions) as well with no
I’ve also installed the Active Tcl (even though I don’t think it’s

Anyone know how to fix this?


From: Ryan B. [email protected]
Subject: RubyTk - tkimg fails to import?
Date: Thu, 6 Jun 2013 08:27:20 +0900
Message-ID: [email protected]

require ‘tkextlib/tkimg’
RuntimeError: TkPackage can’t find package Img

It means that Ruby/Tk cannot find Tcl/Tk’s Img extension package.
Each library under “tkextlib/” requires to install each extension
of Tcl/Tk.

“tile” library is an exception from those.

Originaly, “tile” is not a standard library.

But now (Tcl/Tk8.4 or later), “tile” is one of the standard libraries.

Probably, you use Tcl/Tk libraries included in a RubyInstaller.
Those has standard libraries only.
Please install the “Img” extension library to your Tcl/Tk installed by
the RubyInstaller, or use ActiveTcl-8.4 (or ActiveTcl-8.5 which
ActiveTcl-8.4 to use extensions on ActiveTcl-8.4) on your Ruby/Tk.

You can check supported extensions on your Ruby/Tk by
“ruby C:/Ruby193/lib/ruby/1.9.1/tkextlib/pkg_checker.rb”.
If pkg_checker.rb reports “FAIL” by “[name, :package]” for an extension,
it means that your Tcl/Tk libraries cannot find the “name” extension.

“Fail to require an extension package” is one of the FAQs of Ruby/Tk.



Thanks for the response. Did not expect to get a response from the guy
who wrote the extensions lol.

And yes, I used the WindowsRubyInstaller that came with Tk bindings.
However, it says it’s using version 8.5.12

require ‘tk’
=> true


In any case, I understand what you are trying to say, but how do I
actually go about “installing” the extension? The WindowsRubyInstaller
only creates a tk and tkextlib folder which already have the tkimg.rb
and tkimg folders. I’m guessing I have to add tkimg to the

I’ve installed ActiveTcL-8.5 but it doesn’t not do anything.

I’ve tried replacing with one that includes extra extensions
(found it one some website). It seems to work (no errors) however I
still could not get any PNG images to appear: I stopped getting error
messages and no instant crashes, however the picture would never load.

Thanks again for the response… Been researching this for the past few
days with little success.


From: Ryan B. [email protected]
Subject: Re: RubyTk - tkimg fails to import?
Date: Fri, 7 Jun 2013 03:32:31 +0900
Message-ID: [email protected]

And yes, I used the WindowsRubyInstaller that came with Tk bindings.
However, it says it’s using version 8.5.12

In this case, it is not important.
Please see “c:\Ruby193\lib\tcltk” folder.
Probably, you can find Tcl/Tk libraries which installed by
Those are pure Tcl/Tk. Ruby/Tk links the Tcl/Tk interpreter.
To use a Tcl/Tk extension library, the Tcl/Tk interpreter must be able
load the extension.
For example, “tkextlib/tkimg.rb” is a wrapper to control “Img”
So, to use it, the Tcl/Tk interpreter linked to Ruby must be able to
the extension.

The Tcl/Tk interpreter installed by RubyInstaller checks
“c:\Ruby193\lib\tcltk” folder as a library search path.
Then, you must put Tcl/Tk extension libraries, which you want use on
Ruby/Tk, under the folder.
Please see “c:\Ruby193\lib\tcltk” folder, again.
You’ll be able to find core (standard) tcl and tk libraries,
and standard extensions (DDE and register access) for Windows.
And you will not be able to find Img extention.

I’ve installed ActiveTcL-8.5 but it doesn’t not do anything.

If you find Img extension (“Img1.x” folder) at “c:\Tcl\lib”,
please copy it to “c:\Ruby193\lib\tcltk”.
Unfortunately, if you don’t have “Img1.x”, please get it from
ActiveTcl-8.4. The extension libraries included in ActiveTcl-8.4
(not included ActiveTcl-8.5) are comaptible with ActiveTcl-8.5.

If you want to use other extionsions, you can add them by same way.

Or, remove tcl85.dll and tk85.dll from “c:\Ruby193\bin”.
Then, your ruby will use the Tcl/Tk libraries on ActiveTcl.


I copied the “Img1.x” folder to “ruby2.0.0/lib/tcltk” and then ran the
pkg_checker.rb and it recognized the tkimg extension.

Just fiddles with it and I can say that it works 100%

Thank you so much for the help.

I copied the “Img1.4.0.4” folder (from C:/Tcl/lib) into my “tcltk”
folder (Ruby2.0.0/lib/tcltk").

I haven’t tried the other method but it might be easier to just install
ActiveTcl and delete the dll’s so that Ruby defaults to the ActiveTcl
installation (has a lot of extensions).