How to copy the palette from one image to another using imagepalettecopy() function in PHP?

The imagepalettecopy() function is an inbuilt PHP function used to copy the color palette from one image resource to another. This function is particularly useful when working with palette-based images where you want to share the same color scheme between multiple images.

Syntax

void imagepalettecopy(resource $destination, resource $source)

Parameters

The imagepalettecopy() function accepts two parameters ?

  • $destination − Specifies the destination image resource that will receive the copied palette.

  • $source − Specifies the source image resource from which the palette will be copied.

Return Value

This function does not return any value. It performs the palette copying operation directly on the destination image resource.

Example 1: Basic Palette Copying

This example demonstrates copying a gray palette from one image to another ?

<?php
   // Create two palette images using imagecreate() function
   $palette1 = imagecreate(700, 300);
   $palette2 = imagecreate(700, 300);
   
   // Allocate gray color in the first palette image
   $gray = imagecolorallocate($palette1, 122, 122, 122);

   // Copy the palette from image 1 to image 2
   imagepalettecopy($palette2, $palette1);

   // Use gray color in image 2 without allocating it again
   imagefilledrectangle($palette2, 0, 0, 99, 99, $gray);

   // Output image to the browser
   header('Content-type: image/png');
   imagepng($palette2);
   imagedestroy($palette1);
   imagedestroy($palette2);
?>

Example 2: Counting Colors After Palette Copy

This example shows how palette copying affects the color count in both images ?

<?php
   // Create two palette images using imagecreate() function
   $palette1 = imagecreate(500, 200);
   $palette2 = imagecreate(500, 200);

   // Create a green color in palette1
   $green = imagecolorallocate($palette1, 0, 255, 0);

   // Fill a rectangle with green color in palette1
   imagefilledrectangle($palette1, 0, 0, 99, 99, $green);

   // Copy the palette from image 1 to image 2
   imagepalettecopy($palette2, $palette1);

   // Get the number of colors in both images
   $color1 = imagecolorstotal($palette1);
   $color2 = imagecolorstotal($palette2);
   
   echo "Colors in image 1: " . $color1 . "<br>";
   echo "Colors in image 2: " . $color2;
?>
Colors in image 1: 1
Colors in image 2: 1

Key Points

  • This function only works with palette-based images created using imagecreate()

  • After copying, colors allocated in the source image can be used in the destination image without re-allocation

  • The function copies the entire palette, maintaining color consistency between images

Conclusion

The imagepalettecopy() function is essential for maintaining color consistency across palette-based images in PHP. It allows efficient sharing of color palettes without the need to manually recreate colors in each image.

Updated on: 2026-03-15T09:49:35+05:30

215 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements