本例子介绍使用php自带的GD库对png和jpg图片进行放大和缩小处理
$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); ???????????break; ???????case ‘png‘: ???????????dealpng($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); ???????????break; ???????default: ???????????echo "请确认需要处理图片类型是否正确"; ???????????break; ???}}/** * 处理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 */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);}
php缩放处理png和jpg图片
原文地址:https://www.cnblogs.com/legendheng/p/9130786.html