php 图像裁剪(自定义裁剪图片大小)

来源:互联网 发布:淘宝c店铺运营计划表 编辑:程序博客网 时间:2024/05/22 10:54
<?php/*** 图像裁剪* @param $title string 原图路径* @param $content string 需要裁剪的宽* @param $encode string 需要裁剪的高*/function imagecropper($source_path, $target_width, $target_height){$source_info = getimagesize($source_path);$source_width = $source_info[0];$source_height = $source_info[1];$source_mime = $source_info['mime'];$source_ratio = $source_height / $source_width;$target_ratio = $target_height / $target_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($source_path);break;case 'image/jpeg':$source_image = imagecreatefromjpeg($source_path);break;case 'image/png':$source_image = imagecreatefrompng($source_path);break;default:return false;break;}$target_image = imagecreatetruecolor($target_width, $target_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, $target_width, $target_height, $cropped_width, $cropped_height);//保存图片到本地(两者选一)//$randNumber = mt_rand(00000, 99999). mt_rand(000, 999);//$fileName = substr(md5($randNumber), 8, 16) .".png";//imagepng($target_image,'./'.$fileName);//imagedestroy($target_image);//直接在浏览器输出图片(两者选一)header('Content-Type: image/jpeg');imagepng($target_image);imagedestroy($target_image);imagejpeg($target_image);imagedestroy($source_image);imagedestroy($target_image);imagedestroy($cropped_image);}//调用//imagecropper('./img033.jpg',300,300);imagecropper('./img033.jpg',140,140);//imagecropper('./img033.jpg',55,55);
0 0