[Perl] bild in ein tk-script laden

hallo alle zusammen, ich hab folgendes problem, hab auch schon gegoogelt und bin auf nur wenig suchergebnisse gekommen, habe nichts gefunden was mir weiterhelfen konnte.

folgendes stoert mich, ich kann kein jpeg bild in mein perl-skript mit tk laden :

Code:
Cannot open 'logo.jpg' in mode 'r' at /usr/lib/perl5/Tk/Image.pm line 21.

ich gehe aber genau nach der synopsis von CPAN vor :

Code:
use Tk;
use Tk::JPEG;

my $image = $widget->Photo('-format' => 'jpeg', -file => 'something.jpg');

p.s. : habs auch mal mit Tk::PNG ausprobiert, dabei kam die selbe fehlermeldung raus.

als button hab ichs auch mal ausprobiert ( so dass das bild als hintergrund fuer den button erscheint ),
es kommt immer die selbe fehlermeldung, ich kann damit auch nichts anfangen, hab mal einen blick in das image modul geworfen, keine ahnung was mit mode 'r' gemeint sein koennte.

bedanke mich schonmal fuer eure antworten im vorraus!
greets,
 
Du hast ganz sicher den kompletten respektive einenen korrekten relativen Pfad zur Datei angegeben? Hast du Umlaute im Dateinnamen? Sind die Rechte "richtig"? (Also ist die Datei lesbar für den user, unter welchem der perl Interpreter läuft?)

Das hier nach kurzem googlen gefunden: (funktioniert hier problemlos)
Code:
use Tk;
use Tk::JPEG;

my $imageFile = "/full/path/to/teh/file.jpg";

my $mw    = MainWindow->new();
my $image = $mw->Photo( -format => 'jpeg', -file => $imageFile );
$mw->Label( -image => $image )->pack();

MainLoop();
 
war schon fast am verzweifeln das es wieder nicht geht, jetzt funktionierts aber, vielen dank !
der einzige unterschied bei mir ist, das ich die dateiendung nicht mitangegeben habe :

also :

Code:
my $imageFile = "/full/path/to/teh/file";

mit der dateiendung kam naemlich wieder die selbe fehlermeldung.
nochmals dankeschoen!
 
Dies ist zwar GTK aber evtl hilft es weiter:
Code:
sub answer {
    my($filename) = @_;

    require Gtk2;
    Gtk2->init;

    my $window = Gtk2::Window->new('toplevel');
    $window->set_title('Answer Captcha');
    $window->set_position('center-always');

    my $vbox = Gtk2::VBox->new(0, 0);
    $window->add($vbox);
    $vbox->show;

    my $image = Gtk2::Image->new_from_file($filename);
    $vbox->add($image);
    $image->show;

    my $entry = Gtk2::Entry->new;
    $vbox->add($entry);
    $entry->show;

    my $hbox = Gtk2::HBox->new(1, 0);
    $vbox->add($hbox);
    $hbox->show;

    my $ok_button = Gtk2::Button->new('Ok');
    $hbox->add($ok_button);
    $ok_button->show;

    my $captcha;

    my $ok_clicked = sub {
        $captcha = $entry->get_text;
        if ($captcha ne '') {
            $window->hide;
            Gtk2->main_quit;
        } else {
            $entry->grab_focus;
        }
    };

    $ok_button->signal_connect('clicked', $ok_clicked);
    $entry->signal_connect('activate', $ok_clicked);

    $window->show;
    $entry->grab_focus;

    Gtk2->main;

    return $captcha;
}
 
Zurück
Oben