欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php等比缩放图片

程序员文章站 2022-04-14 12:38:06
...
步骤如下:
1.获取图片的基本信息
用这个getimagesize函数

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

3.计算缩放比例
原则是取最小的缩放系数.例如:800*600的图片,缩放到200*200以下,则缩放系数为scale=200/800>200/600?200/600:200/800; 因为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
 */functionscalePic($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 返回对应图片资源
 */functiongetPicType($type,$picname)
{$im=null;
    switch($type)
    {
        case1:  //GIF$im = imagecreatefromgif($picname);
            break;
        case2:  //JPG$im = imagecreatefromjpeg($picname);
            break;
        case3:  //PNG$im = imagecreatefrompng($picname);
            break;
        case4:  //BMP$im = imagecreatefromwbmp($picname);
            break;
        default:
            die("不认识图片类型");
            break;
    }
    return$im;
}

/**
 * function 输出图像
 * @param string $picname 图片名字
 * @param string $pre 新图片名前缀
 * @param resourse $nim 要输出的图像资源
 * @return 返回新的图片名
 */functionoutputImage($picname,$pre,$nim)
{$info = getimagesize($picname);
    $picInfo = pathInfo($picname);
    $newPicName = $picInfo['dirname'].'/'.$pre.$picInfo['basename'];//输出文件的路径switch($info[2])
    {
        case1:
            imagegif($nim,$newPicName);
            break;
        case2:
            imagejpeg($nim,$newPicName);
            break;
        case3:
            imagepng($nim,$newPicName);
            break;
        case4:
            imagewbmp($nim,$newPicName);
            break;
    }
    return$newPicName;
}
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了 php等比缩放图片,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。