How to Create a PNG or JPEG Image using PHP?

Published on April 30, 2025 | 2 min read

  1. Home
  2. Blog
  3. How to Create a PNG or JPEG Image using PHP?

Creating dynamic images using PHP can be incredibly useful for generating charts, profile badges, watermarks, or even memes. PHP's built-in GD Library provides powerful tools to create and manipulate PNG and JPEG images on the fly. In this article, we'll guide you step-by-step on how to generate both PNG and JPEG images using PHP - with best practices and links to optimize your image for web performance.


Why Create Images with PHP?

Dynamic image creation is valuable when:

  • Personalizing images based on user input (e.g. profile pictures)
  • Creating automated thumbnails
  • Building graphs or charts
  • Adding watermarks or branding

Requirements

Make sure the GD library is enabled in your PHP configuration:

1
php -m | grep gd

If it’s not listed, install it (example for Ubuntu):

1
sudo apt-get install php-gd


Steps to Create a PNG or JPEG Image Using PHP

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

// Create Image
$width = 400;
$height = 200;
$image = imagecreatetruecolor($width, $height);

// Allocate Colors
$white = imagecolorallocate($image, 255, 255, 255);
$blue = imagecolorallocate($image, 0, 0, 255);

// Fill Background & Add Text or Shapes
imagefilledrectangle($image, 0, 0, $width, $height, $white);
imagestring($image, 5, 100, 80, "Hello, World!", $blue);

// Output as PNG
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);

// Or Output as JPEG
header('Content-Type: image/jpeg');
imagejpeg($image, null, 90); // 90 = quality
imagedestroy($image);


Pro Tips for Web Optimization

Learn More About PHP Image Functions

Final Thoughts

PHP makes image creation surprisingly straightforward. With just a few lines of code, you can generate customized visuals, enhance your application’s interactivity, and automate graphic workflows. Just remember to compress and format your images properly for web use.

Share This Article on Social Media