> -----Original Message-----
> From: Daevid Vincent [mailto:dae...@daevid.com] 
> Sent: Monday, December 06, 2010 4:02 PM
> To: php-general@lists.php.net
> Subject: [PHP] How can I call GD's imagepng() directly from my class?
> 
> I have a class that does some massive computations to compute a LOPA
> (layout of passenger aircraft).
>  
> I currently render it in an HTML table with little seats. I 
> want to now
> make this using GD so I can show entire fleets of aircraft on 
> one page.
>  
> Inside my LOPA.class.php I have this method:
> 
>       public function render_image()
>       {
>               $my_img = imagecreate( 200, 80 );
>               $background = imagecolorallocate( $my_img, 0, 0, 255 );
>               $text_colour = imagecolorallocate( $my_img, 
> 255, 255, 0 );
>               $line_colour = imagecolorallocate( $my_img, 
> 128, 255, 0 );
>               imagestring( $my_img, 4, 30, 25, "Test Image", 
> $text_colour
> );
>               imagesetthickness ( $my_img, 5 );
>               imageline( $my_img, 30, 45, 165, 45, $line_colour );
> 
>               header( "Content-type: image/png" );
>               header('Content-Length: ' . strlen($my_img));
>               imagepng( $my_img );
> 
>               imagecolordeallocate( $line_color );
>               imagecolordeallocate( $text_color );
>               imagecolordeallocate( $background );
>               imagedestroy( $my_img );
>       }
> 
> 
> And I'm trying to call it from a PHP page like so:
> 
> <img src="<?php $my_lopa->render_image(); ?>" alt="Image 
> created by a PHP
> script" width="200" height="80">
> 
> But it doesn't show the picture. :\
> 
> If I take the contents of that function and dump it into a 
> "gdtest.php"
> file and call it like this however, it does work:
> 
> <img src="images/gdtest.php" alt="Image created by a PHP script"
> width="200" height="80">
> 
> So what am I doing wrong above that I can't just call it from 
> my class?
> 

I got a little 'hack' further, but not loving it. Maybe I'll move the image
to a $_SESSION variable and then have the "gdtest.php" pull it and echo it
that way....

        public function render_image()
        {
                $my_img = imagecreate( 200, 80 );
                $background = imagecolorallocate( $my_img, 0, 0, 255 );
                $text_colour = imagecolorallocate( $my_img, 255, 255, 0 );
                $line_colour = imagecolorallocate( $my_img, 128, 255, 0 );
                imagestring( $my_img, 4, 30, 25, "Test Image", $text_colour
);
                imagesetthickness ( $my_img, 5 );
                imageline( $my_img, 30, 45, 165, 45, $line_colour );

                ob_start();
                header( "Content-type: image/png" );
                header('Content-Length: ' . strlen($my_img));
                imagepng( $my_img );
                $final_image_data = ob_get_contents();
                ob_end_clean();

                imagecolordeallocate( $line_color );
                imagecolordeallocate( $text_color );
                imagecolordeallocate( $background );
                imagedestroy( $my_img );

                echo
'data:image/png;base64,'.base64_encode($final_image_data);
        }

<img src="<?php $my_lopa->render_image(); ?>" width="200" height="80">



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to