Skip to content

Instantly share code, notes, and snippets.

@ZachMoreno
Created February 21, 2012 07:32
Show Gist options
  • Save ZachMoreno/1874828 to your computer and use it in GitHub Desktop.
Save ZachMoreno/1874828 to your computer and use it in GitHub Desktop.
Reduce Image Size
<?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