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

imagepng behaviour

Postby Bob Kellock » Sat Dec 19, 2009 7:05 am

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?


Syntax: [ Download ] [ Hide ]
<?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);  // Puts blank form on screen but, if implemented, the redirection doesn't work
    $textcolour = imagecolorallocate($img, 0, 0, 0);
//  Font converted from ttf using
    $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
//  header('Content-Type: text/html; charset=iso-8859-1');      // appears to be redundant
    header('refresh: 0; url=stamped.html');                     // redirect to specified page
Bob Kellock
Forum Newbie
Posts: 10
Joined: Fri Oct 30, 2009 10:57 am
Location: Wiltshire, UK

Re: imagepng behaviour

Postby greyhoundcode » Mon Jun 28, 2010 3:28 pm

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.
User avatar
Forum Regular
Posts: 611
Joined: Mon Feb 11, 2008 5:22 am

Return to

Who is online

Users browsing this forum: No registered users and 1 guest