Hallo!Ich würde gerne alle 2 Sekunden ein neues Bild auf meiner Canvas ausgeben lassen.
Dazu habe ich mir folgendes gebastelt (ist noch in der Mache):
#!/Perl/bin/perluse strict;
use warnings;
#use diagnostics;
use Data::Dumper();
#print Data::Dumper::Dumper();
use Tk;
use Tk::JPEG;
use Tk::PNG;
my $gdir = 'c:/apache/htdocs/grafiken/';
my @fotos = qw(visitenKarte.png cms/cms_logo2.gif igs/logo5_o.jpg);
my $mw = MainWindow->new(-width=>800, -height=>640,);
$mw->packPropagate(0);
my $c = $mw->Canvas(
-width => 1,
-height => 1,
-background => 'dark slate gray',
)->pack;
my $id = undef;
my $cnt = 0;
$id = $mw->repeat(2000, sub{ main::count($mw) });
my $foto = $c->Photo(-file => $gdir.$fotos[$cnt]);
sub count {
$foto->destroy();
$c->destroy();
$c = $mw->Canvas(
-width => 1,
-height => 1,
-background => 'dark slate gray',
)->pack;
$foto = $c->Photo(-file => $gdir.$fotos[$cnt]);
# print Data::Dumper::Dumper($foto);
$c->createImage(0, 0,
-image => $foto,
-tag => $fotos[$cnt],
-anchor => 'nw',
);
$c->configure(-width => $foto->width(), -height => $foto->height());
$c->update();
$mw->update();
if( $cnt < scalar(@fotos)-1 ){
$cnt++;
}else{
$cnt = 0;
}
}
MainLoop;
exit(0);
Das Ding funktioniert soweit auch ganz gut.
Nur leider müllt mir das Script den Arbeitsspeicher mehr und mehr zu :(
Binnen weniger Sekunden steigt der Speicherbedarf um ca. ein bis zwei Megabyte.
Dabei lösche ich doch bei jedem Durchlauf extra die alte Canvas und das alte Bild (oder?).
Wie kann ich das vermeiden?
mfg pktm
Datum: 16.11.2004-00:21
