Search code examples
phpmysqlgd

Generate and then save an image


I just wrote this code to generate an image

<?php

$canvas = imagecreatetruecolor(800, 350);

$pink = imagecolorallocate($canvas, 255, 105, 180);
$white = imagecolorallocate($canvas, 255, 255, 255);
$green = imagecolorallocate($canvas, 132, 135, 28);

imagefill($canvas, 0, 0, $white); // BACKGROUND

function drawlinebox($x1, $y1, $x2, $y2, $height, $color){
    global $canvas;
    imagesetthickness ( $canvas, 1 );
    for ($i=1; $i < $height; $i++){
        imageline( $canvas, $x1, $y1, $x2, $y2, $color );
        $y1++; $y2++;
    }
}

drawlinebox(20, 20, 780, 300, 30, $green);

drawlinebox(20, 300, 780, 20, 30, $pink);

// Output and free from memory
header('Content-Type: image/png');

imagepng($canvas, NULL, 9);

imagedestroy($canvas);

?>

but I also want this image to saved automatically on the server. Think of it as a cron job. Which creates images, then saves the image on the sever for later use and inserts the saved image location in the DB.


Solution

  • As stated in the manual, imagepng()'s second parameter is $filename which allows you to store the result in a file.