- //图片裁剪、缩放函数
- //$filepath图片路径,$percent缩放百分比
- function imagepress($filepath,$percent='0.5'){
- // 图片类型
- header('Content-Type: image/jpeg');
- // 获得新的图片大小
- list($width, $height) = getimagesize($filepath);
- $new_width = $width * $percent;
- $new_height = $height * $percent;
- // 重新取样
- $image_p = imagecreatetruecolor($new_width, $new_height);
- $image = imagecreatefromjpeg($filepath);
- imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
- // 输出
- return imagejpeg($image_p, null, 100);
- }
原图:
效果图:
例子:
//$filepath图片路径,$new_width新的宽度,$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;
// 源图过高 - 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;
- }
- // 源图过宽
- elseif ($source_ratio < $target_ratio)
- {
- $cropped_width = $source_height / $target_ratio;
- $cropped_height = $source_height;
- $source_x = ($source_width - $cropped_width) / 2;
- $source_y = 0;
- }
- // 源图适中
- 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);
- // 裁剪
- imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);
- // 缩放
- 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);
- }
|