Created
February 21, 2012 07:32
-
-
Save ZachMoreno/1874828 to your computer and use it in GitHub Desktop.
Reduce Image Size
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function reduce_image_size($userfile_name, $userfile_type) | |
{ | |
//get the file and figure out what type of file it is and some of its attributes | |
switch ($userfile_type) | |
{ | |
case "image/pjpeg": $tempbig = imagecreatefromjpeg(IMG_PATH.$userfile_name); break; | |
case "image/jpeg": $tempbig = imagecreatefromjpeg(IMG_PATH.$userfile_name); break; | |
case "image/jpg": $tempbig = imagecreatefromjpeg(IMG_PATH.$userfile_name); break; | |
case "image/gif": $tempbig = imagecreatefromgif(IMG_PATH.$userfile_name); break; | |
case "image/x-png": $tempbig = imagecreatefrompng(IMG_PATH.$userfile_name); break; | |
case "image/png": $tempbig = imagecreatefrompng(IMG_PATH.$userfile_name); break; | |
} | |
$bigsize = getimagesize(IMG_PATH.$userfile_name); | |
$bigwidth = $bigsize[0]; | |
$bigheight = $bigsize[1]; | |
//If the image is wider than it is tall, or if it is square, and if it is wider than 650 px | |
if ($bigwidth >= $bigheight && $bigwidth > 650) | |
{ | |
$ratio = ($bigwidth/650); | |
$newheight = ($bigheight/$ratio); | |
$tempmed = imagecreatetruecolor(650, $newheight); //create temp images to be moved | |
imagecopyresampled($tempmed, $tempbig, 0, 0, 0, 0, 650, $newheight, $bigwidth, $bigheight); | |
switch ($userfile_type) //move temp images into real folder | |
{ | |
case "image/pjpeg": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/jpeg": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/jpg": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/gif": imagegif($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/x-png": imagepng($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/png": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
} | |
imagedestroy($tempbig); | |
imagedestroy($tempmed); //destroy temp images | |
} | |
//If the image is taller than it is wide, and it is taller than 650 px | |
elseif ($bigheight > $bigwidth && $bigheight > 600) | |
{ | |
$ratio = ($bigheight/600); | |
$newwidth = ($bigwidth/$ratio); | |
$tempmed = imagecreatetruecolor($newwidth, 600); //create temp images to be moved | |
imagecopyresampled($tempmed, $tempbig, 0, 0, 0, 0, $newwidth, 600, $bigwidth, $bigheight); | |
switch ($userfile_type) //move temp images into real folder | |
{ | |
case "image/pjpeg": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/jpeg": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/jpg": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/gif": imagegif($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/x-png": imagepng($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/png": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
} | |
imagedestroy($tempbig); | |
imagedestroy($tempmed); //destroy temp images | |
} | |
//If the image is less than 600 px tall or 650 px wide we just copy it to the new folder | |
else | |
{ | |
$tempmed = imagecreatetruecolor($bigwidth, $bigheight); //create temp images to by moved | |
imagecopyresampled($tempmed, $tempbig, 0, 0, 0, 0, $bigwidth, $bigheight, $bigwidth, $bigheight); | |
switch ($userfile_type) //move temp images | |
{ | |
case "image/pjpeg": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/jpeg": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/jpg": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/gif": imagegif($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/x-png": imagepng($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
case "image/png": imagejpeg($tempmed, RESIZED_PATH.$userfile_name, 95); break; | |
} | |
imagedestroy($tempbig); | |
imagedestroy($tempmed); //destroy temp images | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment