1. 云栖社区>
  2. PHP教程>
  3. 正文

php等比缩放图片

作者:用户 来源:互联网 时间:2017-12-01 20:29:59

php图片缩放等比

php等比缩放图片 - 摘要: 本文讲的是php等比缩放图片, 步骤如下: 1.获取图片的基本信息 用这个getimagesize函数 2.判断图片资源类型并创建对应图片资源 用这个getPicType函数(自定义函数) 3.计算缩放比例 原则是取最小的缩放系数.例如:800*600的图片,缩放到20

步骤如下:
1.获取图片的基本信息
用这个getimagesize函数

2.判断图片资源类型并创建对应图片资源
用这个getPicType函数(自定义函数)

3.计算缩放比例
原则是取最小的缩放系数.例如:800*600的图片,缩放到200*200以下,则缩放系数为scale=200/800>200/600?200/600:200/800; 因为1/4 < 1/3 所以选用1/4的缩放系数

4.计算缩放后的尺寸
wdith = floor(800*1/4);向下取整
height = floor(600*1/4);
结果缩放后的图片变为200*150

5.创建目标图像资源
用这个imagecreatetruecolor函数,创建一个真彩的图像

6.等比缩放
用这个imagecopyresampled函数实现缩放

7.输出图像
用这个outputImage函数(自定义函数)

8.释放图片资源
用这个imagedestroy函数

缩放前后如图:
750*525
php等比缩放图片
200*140
php等比缩放图片

代码如下:

/** * @function 等比缩放函数(以保存的方式实现) * @param string $picname 被缩放的处理图片源 * @param int $maxX 缩放后图片的最大宽度 * @param int $maxY 缩放后图片的最大高度 * @param string $pre 缩放后图片名的前缀名 * @return string 返回后的图片名称(带路径),如a.jpg --> s_a.jpg */function scalePic($picname,$maxX=100,$maxY=100,$pre='s_'){    $info = getimagesize($picname); //获取图片的基本信息    $width = $info[0];//获取宽度    $height = $info[1];//获取高度    //判断图片资源类型并创建对应图片资源    $im = getPicType($info[2],$picname);    //计算缩放比例    $scale = ($maxX/$width)>($maxY/$height)?$maxY/$height:$maxX/$width;    //计算缩放后的尺寸    $sWidth = floor($width*$scale);    $sHeight = floor($height*$scale);    //创建目标图像资源    $nim = imagecreatetruecolor($sWidth,$sHeight);    //等比缩放    imagecopyresampled($nim,$im,0,0,0,0,$sWidth,$sHeight,$width,$height);    //输出图像    $newPicName = outputImage($picname,$pre,$nim);    //释放图片资源    imagedestroy($im);    imagedestroy($nim);    return $newPicName;}/** * function 判断并返回图片的类型(以资源方式返回) * @param int $type 图片类型 * @param string $picname 图片名字 * @return 返回对应图片资源 */function getPicType($type,$picname){    $im=null;    switch($type)    {        case 1:  //GIF            $im = imagecreatefromgif($picname);            break;        case 2:  //JPG            $im = imagecreatefromjpeg($picname);            break;        case 3:  //PNG            $im = imagecreatefrompng($picname);            break;        case 4:  //BMP            $im = imagecreatefromwbmp($picname);            break;        default:            die("不认识图片类型");            break;    }    return $im;}/** * function 输出图像 * @param string $picname 图片名字 * @param string $pre 新图片名前缀 * @param resourse $nim 要输出的图像资源 * @return 返回新的图片名 */function outputImage($picname,$pre,$nim){    $info = getimagesize($picname);    $picInfo = pathInfo($picname);    $newPicName = $picInfo['dirname'].'/'.$pre.$picInfo['basename'];//输出文件的路径    switch($info[2])    {        case 1:            imagegif($nim,$newPicName);            break;        case 2:            imagejpeg($nim,$newPicName);            break;        case 3:            imagepng($nim,$newPicName);            break;        case 4:            imagewbmp($nim,$newPicName);            break;    }    return $newPicName;}

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 图片 , 缩放 等比 ,以便于您获取更多的相关知识。