The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -w
use strict;
use warnings;

#
# Load image from a zip file.
# 

use FindBin();
use Win32::GUI qw(WS_CLIPCHILDREN);
use Win32::GUI::DIBitmap();
use Archive::Zip();

my $W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap load from a zipfile",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
	-pushstyle => WS_CLIPCHILDREN,
) or die "new Window";

my ($width, $height) = ($W->GetClientRect)[2..3];

# Open Zipfile
my $zip = Archive::Zip->new( "$FindBin::Bin/zapotec.zip" ) or die "ZipFile";
# Open image file in zipfile
my $member = $zip->memberNamed( 'Zapotec.JPG' ) or die "member ZipFile";
# Load data image in memory
my $data = $member->contents();
# Load  data immage in a dibbitmap
my $dib = newFromData Win32::GUI::DIBitmap ($data) or die "Load zapotec.jpg";
my $hbitmap = $dib->ConvertToBitmap();

undef $member;
undef $zip;
undef $data;
undef $dib;

$W->AddLabel (
    -pos     => [0 , 0],
    -size    => [$width, $height],
    -bitmap  => $hbitmap,
    -name    => "Bitmap",
);

$W->Show();
Win32::GUI::Dialog();
exit(0);

sub Window_Resize {
    $W->Bitmap->Resize($W->ScaleWidth, $W->ScaleHeight);
}