搜尋
首頁php教程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元

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。