does anyone know if this is simply a limitation of the gif formatted images?
irb(main):001:0> TkPhotoImage.new :file=>‘images/Back.gif’
=> #<TkPhotoImage:0xb73290ec @type=“photo”, @path=“i00006”>
irb(main):002:0> (data=IO.read ‘images/Back.gif’).size
=> 985
irb(main):003:0> TkPhotoImage.new :data=>data
RuntimeError: couldn’t recognize image data
from /dmsp/reference/lib/ruby/1.8/tk.rb:1623:in __invoke' from /dmsp/reference/lib/ruby/1.8/tk.rb:1623:in
_invoke’
from /dmsp/reference/lib/ruby/1.8/tk.rb:1027:in tk_call' from /dmsp/reference/lib/ruby/1.8/tkcanvas.rb:883:in
initialize’
from /dmsp/reference/lib/ruby/1.8/tkcanvas.rb:926:in initialize' from (irb):11:in
new’
from (irb):11
am i limited to bitmaps for this or should other types of images be able to be
loaded this way?
what i’m trying to do is something like
…
back_img = TkPhotoImage.new :data=>back_gif
BEGIN {
back_gif = ‘2158asdfanajk350w9ae8asdf…’
}
…
in otherwords i want to inline all my icon images in the script. i can do this
by inlining them, writing out a tempfile, and using that tempfile - but would
like to avoid the extra step…
any suggestions welcome - i’m terrible with tk and have two days to whip out
this gui…
-a
···
from :0
===============================================================================
EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
PHONE :: 303.497.6469
ADDRESS :: E/GC2 325 Broadway, Boulder, CO 80305-3328
URL :: Solar-Terrestrial Physics Data | NCEI
TRY :: for l in ruby perl;do $l -e “print "\x3a\x2d\x29\x0a"”;done
===============================================================================
thanks for the detailed reply!
if you you introduced the Tk::BinaryString class, and only used it when
‘:buf=>data’ was used - that shouldn’t cause any bugs should it?
thanks again.
-a
···
On Tue, 24 Feb 2004, Hidetoshi NAGAI wrote:
Hi,
From: “Ara.T.Howard” Ara.T.Howard@noaa.gov
Subject: TkPhotoImage :data=>buf
Date: Sun, 22 Feb 2004 02:44:51 +0900
Message-ID: Pine.LNX.4.44.0402211035300.27847-100000@fattire.ngdc.noaa.gov
does anyone know if this is simply a limitation of the gif formatted images?
It’s a bug. I understand the reason og the trouble. But it may be a little
difficalt to fix.
The bug depends on string interchange between Ruby and Tk interpreter. To
avoid the trouble of the difference of encoding between the interpreters,
current Ruby/Tk converts encoding of strings automatically. Usually it will
be convenient for Ruby/Tk users. Therefore, when treats a binary string
(especially, includes null bytes), the data is garbled.
To fix the bug, I’ll have to edit tcltklib.c and TkVariable class, and add a
new class “Tk::BinaryString” which is a subclass of Tk::EncodedString class.
A Tk::EncodedString instance is a string with encoding information. By
creating a Tk::BinaryString instance (has a special encoding ‘binary’) for a
binary string, Ruby/Tk recognizes that the string never be converted and
never be terminated by a null byte.
Although this strategy may trouble Ruby/Tk users, it will be an actual and
reasonable solution. I think so. Probably I’ll have to change the
implementation of TkVariable class. My only worry is en-bugging by side
effects.
Please wait for a good news about this. It will not be far-off.
–
EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
PHONE :: 303.497.6469
ADDRESS :: E/GC2 325 Broadway, Boulder, CO 80305-3328
URL :: Solar-Terrestrial Physics Data | NCEI
TRY :: for l in ruby perl;do $l -e “print "\x3a\x2d\x29\x0a"”;done
===============================================================================