search
Homephp教程php手册图片裁剪缩放函数(支持方位裁剪和自定义坐标裁剪)

图片裁剪缩放函数,支持方位裁剪和自定义坐标裁剪
/**<br>  * 图片裁剪函数,支持指定定点裁剪和方位裁剪两种裁剪模式<br>  * @param <string>  $src_file       原图片路径<br>  * @param <int>     $new_width      裁剪后图片宽度(当宽度超过原图片宽度时,去原图片宽度)<br>  * @param <int>     $new_height     裁剪后图片高度(当宽度超过原图片宽度时,去原图片高度)<br>  * @param <int>     $type           裁剪方式,1-方位模式裁剪;0-定点模式裁剪。<br>  * @param <int>     $pos            方位模式裁剪时的起始方位(当选定点模式裁剪时,此参数不起作用)<br>  *                                      1为顶端居左,2为顶端居中,3为顶端居右; <br>  *                                      4为中部居左,5为中部居中,6为中部居右; <br>  *                                      7为底端居左,8为底端居中,9为底端居右;<br>  * @param <int>     $start_x        起始位置X (当选定方位模式裁剪时,此参数不起作用)<br>  * @param <int>     $start_y        起始位置Y(当选定方位模式裁剪时,此参数不起作用)<br>  * @return <string>                 裁剪图片存储路径<br>  */<br> function thumb($src_file, $new_width, $new_height, $type = 1, $pos = 5, $start_x = 0, $start_y = 0) {<br>     $pathinfo = pathinfo($src_file);<br>     $dst_file = $pathinfo['dirname'] . '/' . $pathinfo['filename'] .'_'. $new_width . 'x' . $new_height . '.' . $pathinfo['extension'];<br>     if (!file_exists($dst_file)) {<br>         if ($new_width              echo "params width or height error !";<br>             exit();<br>         }<br>         if (!file_exists($src_file)) {<br>             echo $src_file . " is not exists !";<br>             exit();<br>         }<br>         // 图像类型<br>         $img_type = exif_imagetype($src_file);<br>         $support_type = array(IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF);<br>         if (!in_array($img_type, $support_type, true)) {<br>             echo "只支持jpg、png、gif格式图片裁剪";<br>             exit();<br>         }<br>         /* 载入图像 */<br>         switch ($img_type) {<br>             case IMAGETYPE_JPEG :<br>                 $src_img = imagecreatefromjpeg($src_file);<br>                 break;<br>             case IMAGETYPE_PNG :<br>                 $src_img = imagecreatefrompng($src_file);<br>                 break;<br>             case IMAGETYPE_GIF :<br>                 $src_img = imagecreatefromgif($src_file);<br>                 break;<br>             default:<br>             echo "载入图像错误!";<br>             exit();<br>         }<br>         /* 获取源图片的宽度和高度 */<br>         $src_width = imagesx($src_img);<br>         $src_height = imagesy($src_img);<br>         /* 计算剪切图片的宽度和高度 */<br>         $mid_width = ($src_width          $mid_height = ($src_height          /* 初始化源图片剪切裁剪的起始位置坐标 */<br>         switch ($pos * $type) {<br>             case 1://1为顶端居左 <br>                 $start_x = 0;<br>                 $start_y = 0;<br>                 break;<br>             case 2://2为顶端居中 <br>                 $start_x = ($src_width - $mid_width) / 2;<br>                 $start_y = 0;<br>                 break;<br>             case 3://3为顶端居右 <br>                 $start_x = $src_width - $mid_width;<br>                 $start_y = 0;<br>                 break;<br>             case 4://4为中部居左 <br>                 $start_x = 0;<br>                 $start_y = ($src_height - $mid_height) / 2;<br>                 break;<br>             case 5://5为中部居中 <br>                 $start_x = ($src_width - $mid_width) / 2;<br>                 $start_y = ($src_height - $mid_height) / 2;<br>                 break;<br>             case 6://6为中部居右 <br>                 $start_x = $src_width - $mid_width;<br>                 $start_y = ($src_height - $mid_height) / 2;<br>                 break;<br>             case 7://7为底端居左 <br>                 $start_x = 0;<br>                 $start_y = $src_height - $mid_height;<br>                 break;<br>             case 8://8为底端居中 <br>                 $start_x = ($src_width - $mid_width) / 2;<br>                 $start_y = $src_height - $mid_height;<br>                 break;<br>             case 9://9为底端居右 <br>                 $start_x = $src_width - $mid_width;<br>                 $start_y = $src_height - $mid_height;<br>                 break;<br>             default://随机 <br>                 break;<br>         }<br>         // 为剪切图像创建背景画板<br>         $mid_img = imagecreatetruecolor($mid_width, $mid_height);<br>         //拷贝剪切的图像数据到画板,生成剪切图像<br>         imagecopy($mid_img, $src_img, 0, 0, $start_x, $start_y, $mid_width, $mid_height);<br>         // 为裁剪图像创建背景画板<br>         $new_img = imagecreatetruecolor($new_width, $new_height);<br>         //拷贝剪切图像到背景画板,并按比例裁剪<br>         imagecopyresampled($new_img, $mid_img, 0, 0, 0, 0, $new_width, $new_height, $mid_width, $mid_height);<br> <br>         /* 按格式保存为图片 */<br>         switch ($img_type) {<br>             case IMAGETYPE_JPEG :<br>                 imagejpeg($new_img, $dst_file, 100);<br>                 break;<br>             case IMAGETYPE_PNG :<br>                 imagepng($new_img, $dst_file, 9);<br>                 break;<br>             case IMAGETYPE_GIF :<br>                 imagegif($new_img, $dst_file, 100);<br>                 break;<br>             default:<br>                 break;<br>         }<br>     }<br>     return ltrim($dst_file, '.');<br> }</string></int></int></int></int></int></int></string>PS:附件是一个有样例图片的测试demo。
不过,这个函数不支持动态gif图片的裁剪缩放。

附件 图片裁剪缩放demo.zip ( 92.54 KB 下载:1059 次 )

AD:真正免费,域名+虚机+企业邮箱=0元

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software