/**
* 裁剪某个图片区域
* @param $imgInfo array 图片 信息
* ini_set("memory_limit","20 M"); 图片过大的话
*/
public static function cutImgByArea($srcImage,$oldWidth,$oldHeight,$imgInfo,$newImgName){
//是否需要缩放
if ($oldWidth > $imgInfo['newWidth'] || $oldHeight > $imgInfo['newHeight']) {
// 按区域比例等裁
if($imgInfo['areaWidth']>0){
$rate = $oldWidth / $imgInfo['areaWidth'];
$imgInfo['newWidth'] = $imgInfo['newWidth']*$rate;
$imgInfo['newHeight'] = $imgInfo['newHeight']*$rate;
$imgInfo['x'] = $imgInfo['x']*$rate;
$imgInfo['y'] = $imgInfo['y']*$rate;
}
// 新建空图片
$thumb = imagecreatetruecolor($imgInfo['newWidth'], $imgInfo['newHeight']);
// 组合新图片
@imagecopyresampled($thumb, $srcImage, -$imgInfo['x'], -$imgInfo['y'], 0, 0, $oldWidth, $oldHeight, $oldWidth, $oldHeight);
if (!imagejpeg($thumb, $newImgName, 100)) {
$flag = 0;
} else {
$flag = 1;
}
} else if ($oldWidth == $newWidth || $oldHeight == $newHeight) {
$flag = 2;
} else {
$flag = 3;
}
return $flag;
}
详细内容在附件