图片裁剪缩放函数,支持方位裁剪和自定义坐标裁剪/**<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元

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

Dreamweaver Mac version
Visual web development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

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