Name

Image::Magick::NFPADiamond - This module renders a NFPA diamond using ImageMagick

Synopsis

   use Image::Magick::NFPADiamond;

   my $diamond=Image::Magick::NFPADiamond->new(red=>3, blue=>0, yellow=>1);
   $diamond->save('warning.jpg');

Description

This module composes a NFPA diamond or fire diamond image using ImageMagick perl module.

Methods

Image::Magick::NFPADiamond::new()

The constructor takes a series of arguments in a hash notation style, none of wich are mandatory:

red
blue
yellow

The values to appear inside the red, yellow and blud diamonds. Should be a number, but any string would do.

white

The text to appear inside the white diamond. Any string would do. A -W- has a special meaning and produces a strikethrough W to signal a hazardous material that shouln't be mixed with water. JackDaniels is a synonim for this.

size

The size of the resulting image expressed as a single integer. The resulting image is always a square of size x size. If this argument is missing, a size of 320 is assumed.

save([file])

The save() method writes the image to a specified argument. The argument may be a filename, but anything acceptable by ImageMagick should work.

response([format])

The response method() writes the image to STDOUT. This is usefull for a CGI implementation (see the sample below). The argument is a ImageMagick format argument (like 'jpg','gif','png', etc).

handle()

Returns the underlying Magick image so it can be used as an element to another one

Restrictions

The diamond generation is done according to the following diagram:

All 4 text are scaled the same, based on the 'AAAA' string on 24px as a seed. This should cover strings like 'ALK', 'ACID'. A longer text will overlap.

The red and blue regions are colored using the ImageMagick provided 'red' and 'yellow' colors. The blue region is '#0063FF' to get a lighter tone.

Sample

This script works both with PerlEx and Apache

        #!perl

        #This Perl script will produce a dynamic NFPA alike diamond
        use strict "vars";
        use strict "subs";

        use CGI;
        use Image::Magick::NFPADiamond;

        my $request=new CGI;

    #Using $request->Vars allows for a query_string like 'red=1&blue=2' to work
        my $img=Image::Magick::NFPADiamond->new($request->Vars) || die "Fail\n";

        print $request->header(-type=> "image/jpeg",  -expires=>'+3d');
        binmode STDOUT;
    $img->response('jpg');

See Also

http://www.imagemagick.org/script/perl-magick.php, the PerlMagick man page.

AUTHOR

Erich Strelow <estrelow@ceresita.cl>

COPYRIGHT AND LICENSE

Copyright (C) 2008 by Erich Strelow

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.

Disclaimer

This module is provided "as is". This is in no way a sanctioned nor official nor verified version of the NFPA standard.