We're a community of 1.1M IT Pros here for help, advice, solutions, professional growth and fun. Join us!
1,080,318 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Start New Discussion Reply to this Discussion

Upload and Resize PNG and GIF images

How would I go about uploading and resizing a transparent PNG, GIF image using PHP? I have a script but it only works with JPG images and of course JPG images do not support transparent images.

The image also needs to maintain it's transparency when resized.

Thanks in Advance!

4
Contributors
7
Replies
3 Years
Discussion Span
9 Months Ago
Last Updated
9
Views
lonestar23
Light Poster
44 posts since Mar 2008
Reputation Points: 20
Solved Threads: 0
Skill Endorsements: 0
<?php
//header ("Content-type: image/jpeg");
/*
JPEG / PNG Image Resizer
Parameters (passed via URL):

img = path / url of jpeg or png image file

percent = if this is defined, image is resized by it's
          value in percent (i.e. 50 to divide by 50 percent)

w = image width

h = image height

constrain = if this is parameter is passed and w and h are set
            to a size value then the size of the resulting image
            is constrained by whichever dimension is smaller

Requires the PHP GD Extension

Outputs the resulting image in JPEG Format

By: Michael John G. Lopez - www.sydel.net
Filename : imgsize.php
*/
//resize('images/phone.jpg','images/phone_thumb.jpg',100);

function uploadpic($file,$thumb_file,$field,$thumb_width=100){
	$result=false;
	if(is_uploaded_file($_FILES[$field]['tmp_name']))
		{
			move_uploaded_file($_FILES[$field]['tmp_name'],$file);
			thumbnail($file,$thumb_file,$thumb_width);
			$result=true;
		}
	return $result;
}


function resize($orig_file,$thumb_file,$prop){
	$img = $orig_file;
	$constrain = true;
	$w = $prop;
	$h = $prop;
	
	// get image size of img
	$x = @getimagesize($img);
	// image width
	$sw = $x[0];
	// image height
	$sh = $x[1];
	
	if ($percent > 0) {
		// calculate resized height and width if percent is defined
		$percent = $percent * 0.01;
		$w = $sw * $percent;
		$h = $sh * $percent;
	} else {
		if (isset ($w) AND !isset ($h)) {
			// autocompute height if only width is set
			$h = (100 / ($sw / $w)) * .01;
			$h = @round ($sh * $h);
		} elseif (isset ($h) AND !isset ($w)) {
			// autocompute width if only height is set
			$w = (100 / ($sh / $h)) * .01;
			$w = @round ($sw * $w);
		} elseif (isset ($h) AND isset ($w) AND isset ($constrain)) {
			// get the smaller resulting image dimension if both height
			// and width are set and $constrain is also set
			$hx = (100 / ($sw / $w)) * .01;
			$hx = @round ($sh * $hx);
	
			$wx = (100 / ($sh / $h)) * .01;
			$wx = @round ($sw * $wx);
	
			if ($hx < $h) {
				$h = (100 / ($sw / $w)) * .01;
				$h = @round ($sh * $h);
			} else {
				$w = (100 / ($sh / $h)) * .01;
				$w = @round ($sw * $w);
			}
		}
	}
	
	$im = @ImageCreateFromJPEG ($img) or // Read JPEG Image
	$im = @ImageCreateFromPNG ($img) or // or PNG Image
	$im = @ImageCreateFromGIF ($img) or // or GIF Image
	$im = false; // If image is not JPEG, PNG, or GIF
	
	if (!$im) {
		// We get errors from PHP's ImageCreate functions...
		// So let's echo back the contents of the actual image.
		readfile ($img);
	} else {
		// Create the resized image destination
		$thumb = @ImageCreateTrueColor ($w, $h);
		// Copy from image source, resize it, and paste to image destination
		@ImageCopyResampled ($thumb, $im, 0, 0, 0, 0, $w, $h, $sw, $sh);
		// Output resized image
		@ImageJPEG ($thumb,$thumb_file);
	}
}
?>
xarz
Newbie Poster
24 posts since Nov 2008
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0

Thanks for the code sample, I will test it out!

lonestar23
Light Poster
44 posts since Mar 2008
Reputation Points: 20
Solved Threads: 0
Skill Endorsements: 0

Thanks for the code sample, I will test it out!

actually, I myself use it and its really working..

xarz
Newbie Poster
24 posts since Nov 2008
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0

actually, I myself use it and its really working..

Hi, - great script -btw,
.... but :D

@ImageJPEG ($thumb,$thumb_file);

will create only a JPG thumb image.
If i have a PNG image file to resize (with transparent background), it will get me a JPG image as result - with black background.

I modified the function above to the one:

@ImagePNG ($thumb,$thumb_file);

but, still having a black background on the result PNG image ( I want to have the same transparent background as the initial file)..

Can you help me with that ?!
C.

cosmox
Newbie Poster
2 posts since Dec 2008
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0
xarz
Newbie Poster
24 posts since Nov 2008
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0
cosmox
Newbie Poster
2 posts since Dec 2008
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

Resize image to the 200x200 and 50x50 and keep orginal image
SNIP

Gatis
Newbie Poster
1 post since Aug 2012
Reputation Points: 0
Solved Threads: 0
Skill Endorsements: 0

This article has been dead for over three months: Start a new discussion instead

Post: Markdown Syntax: Formatting Help
 
You
 
© 2013 DaniWeb® LLC
Page generated in 0.1042 seconds using 2.74MB