#!/usr/bin/perl =head1 DESCRIPTION View random images from the supplied folder (supports . and ~). Every time you close an image a new random image will open, until the program is stopped. Inspired by "Re^2: Tk show image from web" by IB2017 https://www.perlmonks.org/index.pl?node_id=11108799 =cut use strict; use warnings; use autodie; use File::Spec; use MIME::Base64; use Tk; use Tk::Photo; use Tk::JPEG; use Tk::PNG; my $dir = shift || die "Usage: $0 /path/to/images"; die 'Folder not found :-(' unless -d $dir; opendir my $dh, glob $dir; my @img = grep /\.(jpe?g|gif|png|bmp)/i, readdir $dh; closedir $dh; die 'No images found, try again!' unless @img; while () { my $img = $img[rand@img]; my $path = File::Spec->catfile($dir,$img); open my $fh, '<', $path; my $dat = join '', <$fh>; close $fh; $dat = MIME::Base64::encode_base64($dat); print "$path \n"; my $mw = MainWindow->new; my $top = $mw->Frame()->pack(); my $image = $mw->Photo(-data => $dat); my $label = $top->Label(-image => $image)->pack(); MainLoop }