php进行图片裁剪及生成缩略图程序源代码
2020-12-13 03:46
标签:php图片裁剪 我们经常会遇到对图像进行裁剪动作,下面这段代码就是裁剪的源码 处理方法是: 1.当原图的宽或高任一比规定的尺寸小,只进行等比缩略处理, 2.当原图的宽与高都比规定尺寸大,先进行等比缩略处理,然后算出居中位置进行裁剪 php进行图片裁剪及生成缩略图程序源代码,搜素材,soscw.com php进行图片裁剪及生成缩略图程序源代码 标签:php图片裁剪 原文地址:http://taoyouth.blog.51cto.com/2793776/1411162/*
* $o_photo 原图路径
* $d_photo 处理后图片路径
* $width 定义宽
* $height 定义高
* 调用方法 cutphoto("test.jpg","temp.jpg",256,146);
*/
function cutphoto($o_photo, $d_photo, $width, $height) {
$temp_img = imagecreatefromjpeg($o_photo);
$o_width = imagesx($temp_img); //取得原图宽
$o_height = imagesy($temp_img); //取得原图高
//判断处理方法
if ($width > $o_width || $height > $o_height) { //原图宽或高比规定的尺寸小,进行压缩
$newwidth = $o_width;
$newheight = $o_height;
if ($o_width > $width) {
$newwidth = $width;
$newheight = $o_height * $width / $o_width;
}
if ($newheight > $height) {
$newwidth = $newwidth * $height / $newheight;
$newheight = $height;
}
//缩略图片
$new_img = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($new_img, $temp_img, 0, 0, 0, 0, $newwidth, $newheight, $o_width, $o_height);
imagejpeg($new_img, $d_photo);
imagedestroy($new_img);
} else { //原图宽与高都比规定尺寸大,进行压缩后裁剪
if ($o_height * $width / $o_width > $height) { //先确定width与规定相同,如果height比规定大,则ok
$newwidth = $width;
$newheight = $o_height * $width / $o_width;
$x = 0;
$y = ($newheight - $height) / 2;
} else { //否则确定height与规定相同,width自适应
$newwidth = $o_width * $height / $o_height;
$newheight = $height;
$x = ($newwidth - $width) / 2;
$y = 0;
}
//缩略图片
$new_img = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($new_img, $temp_img, 0, 0, 0, 0, $newwidth, $newheight, $o_width, $o_height);
imagejpeg($new_img, $d_photo);
imagedestroy($new_img);
$temp_img = imagecreatefromjpeg($d_photo);
$o_width = imagesx($temp_img); //取得缩略图宽
$o_height = imagesy($temp_img); //取得缩略图高
//裁剪图片
$new_imgx = imagecreatetruecolor($width, $height);
imagecopyresampled($new_imgx, $temp_img, 0, 0, $x, $y, $width, $height, $width, $height);
imagejpeg($new_imgx, $d_photo);
imagedestroy($new_imgx);
}
}
cutphoto("http://tp3.sinaimg.cn/1700691210/180/1280120708/1", "temp1.jpg", 100, 100);
cutphoto("http://hhcf.tk/img/avatar_big/1318072877.jpg", "temp2.jpg", 100, 100);