图片裁剪源代码+php,php进行图片裁剪及生成缩略图程序源代码

我们经常会遇到对图像进行裁剪动作,下面这段代码就是裁剪的源码

处理方法是:

1.当原图的宽或高任一比规定的尺寸小,只进行等比缩略处理,

2.当原图的宽与高都比规定尺寸大,先进行等比缩略处理,然后算出居中位置进行裁剪

/*

* $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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值