Thread Tk::Photo - Data konvertieren (Base64) (13 answers)
Opened by Kean at 2011-06-15 13:42

topeg
 2011-06-15 18:11
#149637 #149637
User since
2006-07-10
2611 articles
BenutzerIn

user image
Der Doku zufolge soll man es so machen $image_new->data(-format => 'gif') um ein String zu bekommen der Base64 kodiert das GIF-Bild enthält. Aber das funktioniert bei mir nicht. Das Format "gif" wird nicht erkannt.

Ein funktionierendes Würg-Around ist:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
use MIME::Base64;
use Image::Magick;

my $mw = MainWindow->new();

#my $image_data = 'R0lGODlhBgAGAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAGAAYAAAINjA0HAEdwLCwMKIQfBQA7';
my $image_data = 'R0lGODlhBgAGAPABAAAAAP///yH5BAEAAAEALAAAAAAGAAYAAAIJhB0Xq+y5YGQFADs=';
print $image_data."\n";

my $image = $mw->Photo(-data => $image_data, -format => 'gif');
$image->write('test.gif', -format => 'gif');

my $image_new = $mw->Photo( -file => 'test.gif', -format => 'gif' );

my $img=Image::Magick->new();
$img->BlobToImage($image_new->data(-format => 'XPM'));

#$img->Set(magick => 'gif');
#$img->Write('test2.gif');

my $image_data_new = encode_base64($img->ImageToBlob(magick => 'gif'));
print $image_data_new;

exit;


Die Strings unterscheiden sich, da bei der Umwandlung von GIF nach XPM die Kommentare verloren gehen. Benutzt man ein GIF ohne Info-Block sind die beiden Strings identisch.

View full thread Tk::Photo - Data konvertieren (Base64)