本例子介绍使用php自带的GD库对png和jpg图片进行放大和缩小处理
<?php
$target_width = 120; //目标图片宽度
$target_height = 150; //目标图片高度
$target_img = 'me.jpg'; //剪切图片deal($target_width,$target_height,$target_img); //调用主函数
主函数
/***主函数: 获取图片信息,准备参数*/
function deal($target_width,$target_height,$target_img){$img_info=getimagesize($target_img); // 获取原图尺寸$original_width=$img_info[0]; //原图片宽度$original_height=$img_info[1]; //原图片高度$original_mime=$img_info['mime'];$type=substr($original_mime,6); //原本$original_mime值为'image/类型',通过从第六位字符开始截取得到图片类型$target_scale = $target_height/$target_width; //目标图像长宽比$original_scale = $original_height/$original_width; // 原图片长宽比if ($original_scale>=$target_scale){ // 过高$w = intval($src_w);$h = intval($target_scale*$w);$x = 0;$y = ($original_height - $h)/3;} else { // 过宽$h = intval($original_height);$w = intval($h/$target_scale);$x = ($original_width - $w)/2;$y = 0;}switch($type){case 'jpeg':dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //调用处理jpg函数break;case 'png':dealpng($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //调用处理png函数break;default:echo "请确认需要处理图片类型是否正确";break;}
}
处理jpg函数
/*** 处理jpg函数*/
function dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height){// 剪裁$source=imagecreatefromjpeg($target_img); //创建一个新图象$croped=imagecreatetruecolor($w, $h); //新建一个真彩色图像imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷贝图像的一部分// 缩放$scale = $target_width / $w;$target = imagecreatetruecolor($target_width, $target_height); //新建一个真彩色图像$final_w = intval($w * $scale);$final_h = intval($h * $scale);imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h); //重采样拷贝部分图像并调整大小// 保存$timestamp = time();imagejpeg($target, "$timestamp.jpg");imagedestroy($target);
}
处理png函数
/*** 处理png函数*/
function dealpng($target_img,$w,$h,$x,$y,$original_width,$original_height,$target_width,$target_height){// 剪裁$source=imagecreatefrompng($target_img);$croped=imagecreatetruecolor($w, $h); //新建一个真彩色图像imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷贝图像的一部分// 缩放$scale = $target_width / $w;$target = imagecreatetruecolor($target_width, $target_height); //新建一个真彩色图像$final_w = intval($w * $scale);$final_h = intval($h * $scale);imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h); //重采样拷贝部分图像并调整大小// 保存$timestamp = time();imagepng($target, "$timestamp.png");imagedestroy($target);
}