• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 282
  • Last Modified:

php Image Functions

See sample.

The first image is a jpeg. I need to know the php image function coding to produce the 2nd image (with the green background) from the first.
Richard Korts
Richard Korts
1 Solution
I don't know how to do this if the image is a jpeg sorry.
I'm not sure if its even possible. The only ways I can think of doing it with jpegs is to either replace the white colour for another colour; which could result in problems if there are other white ares in the image that shouldnt be replaced. Or to try to create a shape in the white areas and fill the shape with a new colour. But that means it would only fill that shape, and if you use a different image it wont work...

However if you can use gif images instead of jpeg images I have a solution for you.
Change your first image to a gif with a transparent background instead of a white background.
Then use the following php code
(Note: the output file is a gif, but it can be changed to jpeg as long as the first image is a gif)
function EditImage($image, $red, $green, $blue, $newfile) {
	$height = imagesy($image);
	$width = imagesx($image);
    $img = imagecreatetruecolor($width, $height);
    $col = imagecolorallocate($img, $red, $green, $blue);
	imagefill($img, 0, 0, $col);
	imagecopymerge($img, $image, 0, 0, 0, 0, $width, $height, 100);
	imagegif($img, $newfile);
header("Content-type: image/gif");
$NewImage = EditImage(imagecreatefromgif("merged4.gif"), 3, 108, 101, "newimage.gif");
echo "<html><body>";
echo "<img src='newimage.gif'>";
echo "</body></html>";

Open in new window

With white background it would be very very difficult to do.
Instead use the image i uploaded for you. Sort of like they use a green screen in the movies.


and use the script below to change colors
<? header("Content-type:image/jpeg");
	$img = imagecreatefromjpeg("merged4.jpg"); // create image
	$width = imagesx($img); // get width
	$height = imagesy($img); // get height
	$color = imagecolorallocate($img,3,108,101); // allocate new color (rgb values)
	//$color = imagecolorallocate($img,255,120,0); //test with another color
	for($x=0;$x<$width;$x++) { //loop all x
		for($y=0;$y<$height;$y++) { //loop all y
			$set = imagecolorat($img,$x,$y); //get index for x,y
			$colors = imagecolorsforindex($img, $set); // get rgb
			if($colors["red"] < 15 && $colors["green"] > 240  && $colors["blue"] < 15	) { // check color 
				imagesetpixel($img,$x,$y,$color); //replace color
	imagejpeg($img,null,100); //output image

Open in new window


Featured Post

[Webinar] Kill tickets & tabs using PowerShell

Are you tired of cycling through the same browser tabs everyday to close the same repetitive tickets? In this webinar JumpCloud will show how you can leverage RESTful APIs to build your own PowerShell modules to kill tickets & tabs using the PowerShell command Invoke-RestMethod.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now