Martin Gillmaier > Catalyst-View-Image-Text2Image > Catalyst::View::Image::Text2Image

Download:
Catalyst-View-Image-Text2Image-0.02.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.02   Source  

NAME ^

Catalyst::View::Image::Text2Image - View to create text into image AND render GD::Simple-images;

DESCRIPTION ^

Catalyst::View::Image::Text2Image is a view that creates images using GD::Simple. You can set $c->stash->{Text2Image} to several options that will define your output. The "morph" Option lets your image stretch by length of given string and font-definition. Or you just create an image using GD::Simple and pass it to the view.

SYNOPSIS ^

Create a Text2Image view:
 script/myapp_create.pl view Image::Text2Image Image::Text2Image
Text2Image example:
  Your controller:

        sub Text2Image :Local {
                my ( $self, $c) = @_;
                
                $c->stash->{Text2Image}->{string}       ||= 'Done with Catalyst::View::Image::Text2Image';
                $c->stash->{Text2Image}->{x}            = 10; # doesn't matter in this case, might be just 1
                $c->stash->{Text2Image}->{y}            = 45;
                $c->stash->{Text2Image}->{font}         = 'Times New Roman';
                $c->stash->{Text2Image}->{fontsize} = '15';
                $c->stash->{Text2Image}->{bgcolor}      = 'black';
                $c->stash->{Text2Image}->{fgcolor}      = 'green';
                $c->stash->{Text2Image}->{moveTo}       = [0,44];
                $c->stash->{Text2Image}->{angle}        = -5;
                $c->stash->{Text2Image}->{morph}        = 1; ### Should the x value be adapted when text is too long?
                $c->stash->{Text2Image}->{clear}        = 1; ### define "clear" to make canvas-color = bgcolor !!
                $c->stash->{Text2Image}->{transparent}  = 'white'; # set color to become transparent
                
                $c->detach('View::Image::Text2Image');
        }
Example to process a pre-created image with GD::Simple:
  (this leaves you all the possibilities of GD::Simple)

  Your controller:
  
        sub Text2Image :Local {
                my ( $self, $c) = @_;
                my $img = GD::Simple->new(640, 480); 
                $img->fgcolor('black');
                $img->bgcolor('green'); 
                $img->rectangle(10, 10, 150, 150);
                $img->ellipse(50, 50);
                $img->moveTo(0,25);
                $img->font('Times New Roman');
                $img->fontsize(18);
                $img->string('Image processed by Catalyst::View::Image::Text2Image'); 
                $c->stash->{Text2Image}->{'img'} = $img;
                $c->detach('View::Image::Text2Image');
        }

Options

The view is controlled by setting the following values in the stash:

$c->stash->{Text2Image}->{img}

(optional) Can contain a GD::Image object. If set, the view will not create an image but try to process/render this object. If not set, you need at least to provide "y","string", "font" and "fontsize".

$c->stash->{Text2Image}->{x}

The width (in pixels) of the image. Might be altered if option "morph" is set. Only considered if not $c->stash->{Text2Image}->{img}.

$c->stash->{Text2Image}->{y}

The height (in pixels) of the image. Mandatory if not $c->stash->{Text2Image}->{img}

$c->stash->{Text2Image}->{string}

The Text of the image. Only one line supported in this version. Mandatory if not $c->stash->{Text2Image}->{img}

$c->stash->{Text2Image}->{morph}

(optional) Bool. Should the width of the image be adapted to the width of $c->stash->{Text2Image}->{string}? Note: The option "angle" isn't considered in "morph"-functionality, so your images may become to wide if you use "angle" and "morph" together. Only considered if not $c->stash->{Text2Image}->{img}

$c->stash->{Text2Image}->{font}

The font to use for the text. Mandatory if not $c->stash->{Text2Image}->{img}

$c->stash->{Text2Image}->{fontsize}

The font to use for the text. Mandatory if not $c->stash->{Text2Image}->{img}

MORE Options...

More GD::Simple Options are just applied by values in the stash. Tested in this version are: bgcolor, fgcolor, moveTo, clear, transparent and angle. Refer to examples for more informations on that.

Image format

The generated images will always be produced in the PNG-Format.

SEE ALSO ^

GD::Simple Catalyst::View

AUTHOR ^

Martin Gillmaier (MG), <gillmaus at cpan.org>

SUPPORT ^

Critics, requests, commercial support and training for this module is available: Contact "gillmaus at cpan.org" for details.

COPYRIGHT & LICENSE ^

Copyright (C) 2012 Martin Gillmaier (GILLMAUS).

This module is free software; you can redistribute it and/or modify it under the same terms as Perl 5.10.0. For more details, see the full text of the licenses in the directory LICENSES.

This module is distributed in the hope that it will be useful, but it is provided "as is" and without any express or implied warranties.

METHODS ^

process

        Main method of the view.

text2image

        Converts a texts into a png-image using GD::Simple;
        
        param: Hash-Ref of GD::Simple options (meaning: function=>value), for example: 
                        {
                                ### MUST-values:
                                x => 100,
                                y => 20, 
                                font => 'Times New Roman',
                                fontsize => 18,
                                string => 'Huhu..its me..your pic!',
                                ### OPTIONAL Values:
                                morph => 1,     # optional, will adapt x to string-width 
                                clear => '1',   # to set canvas-color=bgcolor. 
                                transparent => 'white' # make background transparent
                                ### other optional, GD::Simple Values:
                                fgcolor => 'black',
                                bgcolor => 'white',
                                angle => -5,
                                moveTo => [0,20] # Move pencil 
                        }
                        
        return: GD image-Object
syntax highlighting: