php图片截取代码说明

<?php
$src_img = "img/test.jpg"; //原图
$dst_w = 320;
$dst_h = 240; //目标

list($width, $height) = getimagesize($src_img);   //getimagesize得到图片的长宽

$dst_scale = $dst_h/$dst_w ;
$src_scale = $height/$width ;

if($src_scale >= $height) { //过高
echo "too height";
$w = intval($width);
$h = intval($dst_scale * $w);
$x = 0;
$y = ($height - $h)/3;
}
else { //过宽
echo "too width";
$h = intval($height);
$w = intval($h/$dst_scale);
$x = ($width - $w)/2; //这个数字没有太多的意义感觉
$y = 0;
}
$source=imagecreatefromjpeg($src_img);   //imagecreatefromjpeg从url或者文件创建一个图像标识符,可以理解为从给定的文件名获取到图像
$croped=imagecreatetruecolor($w, $h);  //imagecreatetruecolor创建真彩色图像,包含的两个参数是宽和高
imagecopy($croped,$source,0,0,$x,$y,$width,$height);  //从源文件拷贝一部分到目标文件

/*

* imagecopy函数说明:

* bool imagecopy ( resource $dst_im, resource $src_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_w, int $src_h )

* 将 src_im 图像中坐标从 src_xsrc_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。

*/

$scale = $dst_w/$w;
$target = imagecreatetruecolor($dst_w, $dst_h);
$final_w = intval($w*$scale);
$final_h = intval($h*$scale);
imagecopyresampled($target,$croped,0,0,0,0,$final_w,$final_h,$w,$h);  //php中缩放图片的函数.
//imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)

$timestamp = time();
imagejpeg($target, "$timestamp.jpg");
imagedestroy($target);
echo "<img src=\"$timestamp.jpg\"> ";

?>

原文地址:https://www.cnblogs.com/liuke/p/2491816.html