ImageMagick uses "blobs" for converting to and from raw image data in scalars.
Here are a few simple usages:
#!/usr/bin/perl
use warnings;
use strict;
use Image::Magick;
my $imgfile = shift;
my $image = Image::Magick->new();
$image->Read($imgfile);
my $blob = $image->ImageToBlob();
#raw image data is now in scalar $blob
#and the opposite
my $output = Image::Magick->new(magick=>'jpg');
$output->BlobToImage( $blob );
$output->Resize(geometry=>'160x120');
$output->Write('z.jpg');
another example to show the scalar blob does indeed contain image data
#!/usr/bin/perl
use warnings;
use strict;
use Image::Magick;
my $image = Image::Magick->new(
size => "600x600",
);
$image->Read("xc:white");
$image->Draw(
primitive => 'line',
points => "300,100 300,500",
stroke => '#600',
);
$image->Set(magick=>'gif');
+
my $blob = $image->ImageToBlob();
open(FH,"> $0.gif")or die "$!\n";
print FH $blob;
close FH;