• 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.
0
Richard Korts
Asked:
Richard Korts
1 Solution
 
mms_masterCommented:
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)
<?php
 
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

0
 
steelseth12Commented:
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.

https://filedb.experts-exchange.com/incoming/ee-stuff/5859-merged4.jpg

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

0

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