imagepng behaviour

GD and GD2 are useful libraries for creating graphics on-the-fly. Discuss your PHP GD and GD2 scripts here.

Moderators: onion2k, General Moderators

Post Reply
Bob Kellock
Forum Newbie
Posts: 10
Joined: Fri Oct 30, 2009 10:57 am
Location: Wiltshire, UK

imagepng behaviour

Post by Bob Kellock »

I've been struggling with overlaying a graphic template with some text and saving the result as a file which, later, will used as an attachment to an email. After creating the overlaid file I need to redirect to another page.
While developing the code I was displaying the template graphic (Line 18 of the code) in which case the redirection failed. But by, commenting out that line, redirection worked.

Can you explain that behaviour?

Bob

Code: Select all

<?php session_start();
   header('Content-Type: image/png');
   $serial  = "ABC123X";                    // normally passed as a session variable
   $imgname = 'blankorder.png';
   $img = @imagecreatefrompng($imgname);    // open image file
   if(!$img)                                // failed to open
   {
      $img = imagecreatetruecolor(300, 30);
      $bak = imagecolorallocate($img, 255, 255, 255);
      $txt = imagecolorallocate($img, 255, 0, 0);
      imagefilledrectangle($img, 0, 0, 300, 30, $bak);
      imagestring($img, 5, 0, 0, 'Error loading ' . $imgname, $txt); //error message
      imagepng($img);
      die();
    }
    else
    {
//  imagepng($img);  // Puts blank form on screen but, if implemented, the redirection doesn't work
    $textcolour = imagecolorallocate($img, 0, 0, 0);
//  Font converted from ttf using http://www.wedwick.com/wftopf.exe
    $font = imageloadfont('Arial24.gdf');
    imagestring($img, $font, 535, 312, $serial, $textcolour);   // insert serial no. in required position
    imagepng($img,'overlaid.png');                              // save overlaid image as a file
    imagedestroy($img);
//  header('Content-Type: text/html; charset=iso-8859-1');      // appears to be redundant
    header('refresh: 0; url=stamped.html');                     // redirect to specified page
   }
?>
 
User avatar
greyhoundcode
Forum Regular
Posts: 613
Joined: Mon Feb 11, 2008 4:22 am

Re: imagepng behaviour

Post by greyhoundcode »

In a nutshell, don't send anything before your headers.

When you uncomment the relevant line you are sending the PNG image first, headers second - that won't work. If you need to display the form before redirecting then it would be better to implement the redirect with JS.
Post Reply