0) $width = $_REQUEST['w']; if (isset($_REQUEST['h']) && is_numeric($_REQUEST['h']) && $_REQUEST['h'] > 0) $height = $_REQUEST['h']; if (is_uploaded_file(@$_FILES['ulimage']['tmp_name'])){ move_uploaded_file($_FILES['ulimage']['tmp_name'], dirname(__FILE__) . "/tmp/" . $_FILES['ulimage']['name']); $allowed_types = array("bmp","wbmp","jpeg","jpg","gif","png","xpm"); $pathinfo = pathinfo($_FILES['ulimage']['name']); if (!in_array(strtolower($pathinfo['extension']), $allowed_types)) echo ""; resizeImage(dirname(__FILE__) . "/tmp/" . @$_FILES['ulimage']['name'], dirname(__FILE__) . "/tmp/" . $targetfilename, $width, $height); $hasupload = TRUE; } function resizeImage($srcimage, $destimage, $width, $height) { if (!file_exists(realpath($srcimage))) return; $srcpathinfo = pathinfo($srcimage); $srcext = strtolower($srcpathinfo['extension']); $destpathinfo = pathinfo($destimage); $destext = strtolower($destpathinfo['extension']); $size = getimagesize( $srcimage ); // Get the size of the original image into an array [0]=> width, [1]=> height $image = null; $canvas = imagecreatetruecolor( $width, $height ); // Prepare canvas // Create a new image in the memory from the file switch ($srcext) { case 'wbmp': case 'bmp': $image = imagecreatefromwbmp($srcimage); break; case 'jpg': case 'jpeg': $image = imagecreatefromjpeg($srcimage); break; case 'png': $image = imagecreatefrompng($srcimage); break; case 'gif': $image = imagecreatefromgif($srcimage); break; case 'xpm': $image = imagecreatefromxpm($srcimage); break; default: return; } // Calculate dimensions $widthratio = $size[0]/$width; $heightratio = $size[1]/$height; $dimensions = array( 'ratio' => $widthratio, 'source_cropwidth' => 0, 'source_cropheight' => 0, 'source_offsetx' => 0, 'source_offsety' => 0 ); if ($heightratio < $widthratio) $dimensions['ratio'] = $heightratio; // let say image is 1200*800, then: // widthratio = 1200/400 = 3 // heightratio = 800/300 = 2.66 // since there is less height than width, the max scale we can do is 2.66, then // the targetwidth to crop = 400 * 2.66 // the targetheight to crop = 300 * 2.66 // the offset width = (1200 - (2.66 * 400))/2 = 68 // the offset height = (800 - (2.66 * 300))/2 = 1 $dimensions['source_width'] = $size[0]; $dimensions['source_height'] = $size[1]; $dimensions['source_cropwidth'] = $width * $dimensions['ratio']; $dimensions['source_cropheight'] = $height * $dimensions['ratio']; $dimensions['source_offsetx'] = ($size[0] - $dimensions['source_cropwidth']) / 2; $dimensions['source_offsety'] = ($size[1] - $dimensions['source_cropheight']) / 2; imagecopyresampled($canvas, $image, 0, 0, $dimensions['source_offsetx'], $dimensions['source_offsety'], $width, $height, $dimensions['source_cropwidth'], $dimensions['source_cropheight']); switch ($destext) { case 'jpg': case 'jpeg': imagejpeg( $canvas, $destimage ); break; case 'png': imagepng( $canvas, $destimage ); break; case 'gif': imagegif( $canvas, $destimage ); break; case 'wbmp': case 'bmp': imagewbmp( $canvas, $destimage ); break; } imagedestroy( $canvas ); imagedestroy( $image ); } ?>
if (is_uploaded_file(@$_FILES['ulimage']['tmp_name'])){
move_uploaded_file($_FILES['ulimage']['tmp_name'], dirname(__FILE__) . "/tmp/" . $_FILES['ulimage']['name']);
$allowed_types = array("bmp","wbmp","jpeg","jpg","gif","png","xpm");
$pathinfo = pathinfo($_FILES['ulimage']['name']);
if (!in_array(strtolower($pathinfo['extension']), $allowed_types))
echo "<script>alert('Invalid file type');</script>";
resizeImage(dirname(__FILE__) . "/tmp/" . @$_FILES['ulimage']['name'], dirname(__FILE__) . "/tmp/" . $targetfilename, $width, $height);
$hasupload = TRUE;
}
function resizeImage($srcimage, $destimage, $width, $height) {
if (!file_exists(realpath($srcimage)))
return;
$srcpathinfo = pathinfo($srcimage);
$srcext = strtolower($srcpathinfo['extension']);
$destpathinfo = pathinfo($destimage);
$destext = strtolower($destpathinfo['extension']);
$size = getimagesize( $srcimage ); // Get the size of the original image into an array [0]=> width, [1]=> height
$image = null;
$canvas = imagecreatetruecolor( $width, $height ); // Prepare canvas
// Create a new image in the memory from the file
switch ($srcext) {
case 'wbmp':
case 'bmp':
$image = imagecreatefromwbmp($srcimage);
break;
case 'jpg':
case 'jpeg':
$image = imagecreatefromjpeg($srcimage);
break;
case 'png':
$image = imagecreatefrompng($srcimage);
break;
case 'gif':
$image = imagecreatefromgif($srcimage);
break;
case 'xpm':
$image = imagecreatefromxpm($srcimage);
break;
default:
return;
}
// Calculate dimensions
$widthratio = $size[0]/$width;
$heightratio = $size[1]/$height;
$dimensions = array(
'ratio' => $widthratio,
'source_cropwidth' => 0,
'source_cropheight' => 0,
'source_offsetx' => 0,
'source_offsety' => 0
);
if ($heightratio < $widthratio)
$dimensions['ratio'] = $heightratio;
// let say image is 1200*800, then:
// widthratio = 1200/400 = 3
// heightratio = 800/300 = 2.66
// since there is less height than width, the max scale we can do is 2.66, then
// the targetwidth to crop = 400 * 2.66
// the targetheight to crop = 300 * 2.66
// the offset width = (1200 - (2.66 * 400))/2 = 68
// the offset height = (800 - (2.66 * 300))/2 = 1
$dimensions['source_width'] = $size[0];
$dimensions['source_height'] = $size[1];
$dimensions['source_cropwidth'] = $width * $dimensions['ratio'];
$dimensions['source_cropheight'] = $height * $dimensions['ratio'];
$dimensions['source_offsetx'] = ($size[0] - $dimensions['source_cropwidth']) / 2;
$dimensions['source_offsety'] = ($size[1] - $dimensions['source_cropheight']) / 2;
imagecopyresampled($canvas, $image, 0, 0, $dimensions['source_offsetx'], $dimensions['source_offsety'], $width, $height, $dimensions['source_cropwidth'], $dimensions['source_cropheight']);
switch ($destext) {
case 'jpg':
case 'jpeg':
imagejpeg( $canvas, $destimage );
break;
case 'png':
imagepng( $canvas, $destimage );
break;
case 'gif':
imagegif( $canvas, $destimage );
break;
case 'wbmp':
case 'bmp':
imagewbmp( $canvas, $destimage );
break;
}
imagedestroy( $canvas );
imagedestroy( $image );
}