/**
* 缩略图生成函数,使用GD2
* @param $srcFile
* @param $toW
* @param $toH
* @param string $toFile
* @param string $default_ext
* @return bool|string
*/
public function image_resize($srcFile, $toW, $toH, $toFile = "", $default_ext="png") {
//error_reporting(0);
if ($toFile == "") {
$toFile = $srcFile;
}
$info = "";
$data = GetImageSize($srcFile, $info);
/////////////////////////////////////////////////////////////////////////////
// 判断图片是否正确
$img_mime = array('image/gif', 'image/jpeg', 'image/png', 'image/bmp');
if (!$data || !in_array($data['mime'], $img_mime)) return "image error!";
/////////////////////////////////////////////////////////////////////////////
switch ($data[2]) {
case 1:
if (!function_exists("imagecreatefromgif")) {
//echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!<a href='javascript:go(-1);'>返回</a>";
return false;
}
$im = ImageCreateFromGIF($srcFile);
break;
case 2:
if (!function_exists("imagecreatefromjpeg")) {
//echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!<a href='javascript:go(-1);'>返回</a>";
return false;
}
$im = ImageCreateFromJpeg($srcFile);
break;
case 3:
$im = ImageCreateFromPNG($srcFile);
break;
}
$srcW = ImageSX($im);
$srcH = ImageSY($im);
$toWH = $toW / $toH;
$srcWH = $srcW / $srcH;
if ($toWH <= $srcWH) {
$ftoW = $toW;
$ftoH = $ftoW * ($srcH / $srcW);
} else {
$ftoH = $toH;
$ftoW = $ftoH * ($srcW / $srcH);
}
if ($srcW > $toW || $srcH > $toH) {
if (function_exists("imagecreatetruecolor")) {
@$ni = ImageCreateTrueColor($ftoW, $ftoH);
imagealphablending($ni,false); // 不合并颜色,直接用$img图像颜色替换,包括透明色;
imagesavealpha($ni,true);// 不要丢了$thumb图像的透明色;
if ($ni) ImageCopyResampled($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
else {
$ni = ImageCreate($ftoW, $ftoH);
ImageCopyResized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
}
} else {
$ni = ImageCreate($ftoW, $ftoH);
ImageCopyResized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
}
if($default_ext == "jpg") {
ImageJpeg($ni, $toFile);
} else {
ImagePNG($ni, $toFile);
}
ImageDestroy($ni);
} else {
// 如果原图比缩略图小,直接复制过去
copy($srcFile, $toFile);
ImageDestroy($im);
return true;
}
ImageDestroy($im);
return true;
}
文章评论