function resize_image($image_path,$max_width,$max_height,$file_prefix,$dir,$border,$mime) { // Determine image filename from image_path $fileArray = explode("/", $image_path); $file_elements = count($fileArray); $last_element = $file_elements - 1; if (!empty($file_ext)) { $out_file = $file_prefix.$fileArray[$last_element]; } else { $out_file = $fileArray[$last_element]; } // Rebuild directory string so we know where to save thumbnail file $directory = ""; for ($a=0;$a<=($last_element - 1);$a++) { if (empty($directory)) { $directory = $fileArray[$a]; } else { $directory = $directory."/".$fileArray[$a]; } } if (!empty($dir)) { $directory = $directory."/".$dir; } $out_file = $directory."/".$out_file; $size = getimagesize($image_path); if (($mime == "image/jpeg") || ($mime == "image/pjpeg")) { $im_in = imagecreatefromjpeg($image_path); } elseif ($mime == "image/gif") { $im_in = imagecreatefromgif($image_path); } elseif ($mime == "image/png") { $im_in = imagecreatefrompng($image_path); } // Get original image dimensions $origW = $size[0]; $origH = $size[1]; // Determine scale percentage - we have 3 cases here if (empty($max_width) && empty($max_height)) { // This is gonna be tricky 'cause we want to avoid proportion problems // Do short side first, then figure out other dimention if ($origW > $origH) { // Horizontal orientation // Determine ideal scale $scale = floor($max_height / $origH); $new_height = $max_height; $new_width = $max_width; $optW = floor($origW*$scale); // Now we need to first crop image to the right proportions before scaling if ($max_width == $max_height) { $cropW = $origH; $cropH = $origH; $origW = $cropW; $origH = $cropH; } elseif ($max_width < $max_height) { $ratio = $max_width/$max_height; $cropW = ($origW*$ratio); $cropH = $origH; $origW = $cropW; $origH = $cropH; } elseif ($max_width > $max_height) { $ratio = $max_height/$max_width; $cropW = $origW; $cropH = ($origH*$ratio); $origW = $cropW; $origH = $cropH; } $im_out = imagecreatetruecolor($cropW, $cropH); imagecopy($im_out, $im_in, 0, 0, 0, 0, $cropW, $cropH); if (($mime == "image/jpeg") || ($mime == "image/pjpeg")) { imagejpeg($im_out, $out_file, 100); $im_in = imagecreatefromjpeg($out_file); } elseif ($mime == "image/gif") { imagegif($im_out, $out_file, 100); $im_in = imagecreatefromgif($out_file); } elseif ($mime == "image/png") { imagepng($im_out, $out_file, 100); $im_in = imagecreatefrompng($image_path); } } elseif ($origW < $origH) { // Vertical orientation // Determine ideal scale $scale = floor($max_width / $origW); $new_width = $max_width; $new_height = $max_height; $optH = floor($origH*$scale); // Now we need to first crop image to the right proportions before scaling if ($max_width == $max_height) { $cropW = $origW; $cropH = $origW; $origW = $cropW; $origH = $cropH; } elseif ($max_width < $max_height) { $ratio = $max_width/$max_height; $cropW = ($origW*$ratio); $cropH = $origH; $origW = $cropW; $origH = $cropH; } elseif ($max_width > $max_height) { $ratio = $max_height/$max_width; $cropW = $origW; $cropH = ($origH*$ratio); $origW = $cropW; $origH = $cropH; } $im_out = imagecreatetruecolor($cropW, $cropH); imagecopy($im_out, $im_in, 0, 0, 0, 0, $cropW, $cropH); if (($mime == "image/jpeg") || ($mime == "image/pjpeg")) { imagejpeg($im_out, $out_file, 100); $im_in = imagecreatefromjpeg($out_file); } elseif ($mime == "image/gif") { imagegif($im_out, $out_file, 100); $im_in = imagecreatefromgif($out_file); } elseif ($mime == "image/png") { imagepng($im_out, $out_file, 100); $im_in = imagecreatefrompng($out_file); } } elseif ($origW == $origH) { // Square - easy $new_width = $max_width; $new_height = $max_height; } } elseif (!empty($max_width) && empty($max_height)) { $scale = ($max_width / $origW); $new_width = $max_width; $new_height = floor($origH * $scale); } elseif (!empty($max_height) && empty($max_width)) { $scale = ($max_height / $origH); $new_height = $max_height; $new_width = floor($origW * $scale); } $im_out = imagecreatetruecolor($new_width, $new_height); imagecopyresized($im_out, $im_in, 0, 0, 0, 0, $new_width, $new_height, $origW, $origH); if (($mime == "image/jpeg") || ($mime == "image/pjpeg")) { imagejpeg($im_out, $out_file, 100); } elseif ($mime == "image/gif") { imagegif($im_out, $out_file, 100); } elseif ($mime == "image/png") { imagepng($im_out, $out_file, 100); } // Draw border if ($border == 1) { if (($mime == "image/jpeg") || ($mime == "image/pjpeg")) { $im_in = imagecreatefromjpeg($out_file); } elseif ($mime == "image/gif") { $im_in = imagecreatefromgif($out_file); } elseif ($mime == "image/png") { $im_in = imagecreatefrompng($out_file); } $color = ImageColorAllocate($im_in,0,0,0); ImageLine($im_in,0,0,($max_width-1),0,$color); // Top border ImageLine($im_in,($max_width-1),1,($max_width-1),($max_height-1),$color); // Right border ImageLine($im_in,($max_width-1),($max_height-1),1,($max_height-1),$color); // Bottom border ImageLine($im_in,0,($max_height-1),0,0,$color); // Left border if (($mime == "image/jpeg") || ($mime == "image/pjpeg")) { imagejpeg($im_in, $out_file, 100); } elseif ($mime == "image/gif") { imagegif($im_in, $out_file, 100); } elseif ($mime == "image/png") { imagepng($im_in, $out_file, 100); } } imagedestroy($im_out); imagedestroy($im_in); return $origW; return $origH; }