-
- //Image cropping and scaling functions
- //$filepath image path, $percent scaling percentage
- function imagepress($filepath,$percent='0.5'){
- //Image type
- header('Content- Type: image/jpeg');
- // Get the new image size
- list($width, $height) = getimagesize($filepath);
- $new_width = $width * $percent;
- $new_height = $height * $ percent;
- // Resampling
- $image_p = imagecreatetruecolor($new_width, $new_height);
- $image = imagecreatefromjpeg($filepath);
- imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
- // Output
- return imagejpeg($image_p, null, 100);
- }
Copy code
Original image:
Rendering:
Example:
-
-
//$filepath image path, $new_width new width, $new_height new height
- function imagepress($filepath, $new_width, $new_height)
- {
- $source_info = getimagesize( $filepath);
- $source_width = $source_info[0];
- $source_height = $source_info[1];
- $source_mime = $source_info['mime'];
- $source_ratio = $source_height / $source_width;
- $target_ratio = $new_height / $new_width;
// The source image is too high
- if ($source_ratio > $target_ratio)
- {
- $cropped_width = $source_width;
- $cropped_height = $source_width * $target_ratio ;
- $source_x = 0;
- $source_y = ($source_height - $cropped_height) / 2;
- }
- // The source image is too wide
- elseif ($source_ratio {
- $cropped_width = $source_height / $ target_ratio;
- $cropped_height = $source_height;
- $source_x = ($source_width - $cropped_width) / 2;
- $source_y = 0;
- }
- // The source image is moderate
- else
- {
- $cropped_width = $source_width;
- $ cropped_height = $source_height;
- $source_x = 0;
- $source_y = 0;
- }
- switch ($source_mime)
- {
- case 'image/gif':
- $source_image = imagecreatefromgif($filepath);
- break;
- case 'image/jpeg':
- $source_image = imagecreatefromjpeg($filepath);
- break;
- case 'image/png':
- $source_image = imagecreatefrompng($filepath);
- break;
- default:
- return false;
- break;
- }
- $target_image = imagecreatetruecolor($new_width, $new_height);
- $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
- // Cropped
- imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y , $cropped_width, $cropped_height);
- // Scaling
- imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $new_width, $new_height, $cropped_width, $cropped_height);
- header('Content-Type: image/jpeg');
- imagejpeg($target_image);
- imagedestroy($source_image);
- imagedestroy($target_image);
- imagedestroy($cropped_image);
- }
Copy code
|