php缩放处理png和jpg图片
Posted legendheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php缩放处理png和jpg图片相关的知识,希望对你有一定的参考价值。
本例子介绍使用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图片的主要内容,如果未能解决你的问题,请参考以下文章