|
@@ -493,51 +493,52 @@ class Upload
|
|
|
imagefill($im, 0, 0, $color);
|
|
|
break;
|
|
|
}
|
|
|
+ if(!$im) {
|
|
|
+ throw new \Exception('不支持的图片类型');
|
|
|
+ }
|
|
|
|
|
|
- $src_W = imagesx($im);//获取大图宽
|
|
|
- $src_H = imagesy($im);//获取大图高
|
|
|
+ $srcW = imagesx($im);//获取大图宽
|
|
|
+ $srcH = imagesy($im);//获取大图高
|
|
|
|
|
|
//计算比例
|
|
|
//检查图片高度和宽度
|
|
|
- $srcScale = sprintf("%.2f", ($src_W / $src_H));//原图比例
|
|
|
+ $srcScale = sprintf("%.2f", ($srcW / $srcH));//原图比例
|
|
|
$destScale = sprintf("%.2f", ($width / $height));//缩略图比例
|
|
|
|
|
|
//echo "<p>原始比例:".$srcScale.";目标比例".$destScale."</p>";
|
|
|
if ($srcScale > $destScale) {
|
|
|
//说明高度不够,就以高度为准
|
|
|
- $myH = $src_H;
|
|
|
- $myW = intval($src_H * ($width / $height));
|
|
|
+ $myH = $srcH;
|
|
|
+ $myW = intval($srcH * ($width / $height));
|
|
|
//获取开始位置
|
|
|
$myY = 0;
|
|
|
- $myX = intval(($src_W - $myW) / 2);
|
|
|
+ $myX = intval(($srcW - $myW) / 2);
|
|
|
} elseif ($srcScale < $destScale) {
|
|
|
//宽度不够就以宽度为准
|
|
|
- $myW = $src_W;
|
|
|
- $myH = intval($src_W * ($height / $width));
|
|
|
+ $myW = $srcW;
|
|
|
+ $myH = intval($srcW * ($height / $width));
|
|
|
$myX = 0;
|
|
|
- $myY = intval(($src_H - $myH) / 2);
|
|
|
+ $myY = intval(($srcH - $myH) / 2);
|
|
|
} else {
|
|
|
- if ($src_W > $src_H) {
|
|
|
- //echo "<p>case 1:</p>";
|
|
|
- $myH = $src_H;
|
|
|
- $myW = intval($src_H * ($width / $height));
|
|
|
+ if ($srcW > $srcH) {
|
|
|
+ $myH = $srcH;
|
|
|
+ $myW = intval($srcH * ($width / $height));
|
|
|
//获取开始位置
|
|
|
$myY = 0;
|
|
|
- $myX = intval(($src_W - $myW) / 2);
|
|
|
+ $myX = intval(($srcW - $myW) / 2);
|
|
|
}
|
|
|
- if ($src_W < $src_H) {
|
|
|
- //echo "case 2";
|
|
|
- $myW = $src_W;
|
|
|
- $myH = intval($src_W * ($height / $width));
|
|
|
+ if ($srcW < $srcH) {
|
|
|
+ $myW = $srcW;
|
|
|
+ $myH = intval($srcW * ($height / $width));
|
|
|
$myX = 0;
|
|
|
- $myY = intval(($src_H - $myH) / 2);
|
|
|
+ $myY = intval(($srcH - $myH) / 2);
|
|
|
}
|
|
|
}
|
|
|
- if ($src_W == $src_H) {
|
|
|
- $myW = intval($src_H * ($width / $height));
|
|
|
- $myH = $src_H;
|
|
|
+ if ($srcW == $srcH) {
|
|
|
+ $myW = intval($srcH * ($width / $height));
|
|
|
+ $myH = $srcH;
|
|
|
|
|
|
- $myX = intval(($src_W - $myW) / 2);
|
|
|
+ $myX = intval(($srcW - $myW) / 2);
|
|
|
$myY = 0;
|
|
|
}
|
|
|
//echo "<p>SW:" . $src_W ."W:" .$myW . "</p><p>X".$myX."</p><p>SH".$src_H.";H:" . $myH ."<p>Y".$myY."</p>";
|