记住用户名密码
/**
* @param $image_path //原始图片路径
* @param $thumb_width //缩略图 宽度
* @param $thumb_height //缩略图 高度
* @param $thumb_pro //生成方式 1 约束宽高缩放(缩略图和原图 比例不一致会拉伸) 2 约束宽度 3 约束高度 4 按尺寸生成约束宽高 (不拉伸)
* @param $thumb_path
* @param int $ml
* @param int $thumb_quality
*/
function CreateThumbs($image_path, $thumb_width, $thumb_height, $thumb_pro, $thumb_path, $ml = 1, $thumb_quality = 100)
{
if (!extension_loaded('gd')) {
die('GD库未安装或未启用');
}
if (!empty($thumb_path) && ($thumb_width > 0 || $thumb_height > 0)) {
/*
$thumb_array=explode('/',$thumb_path);
if (count($thumb_array)>=2){
$thumb_parent='';
if ($ml==1) $thumb_parent='../';
$thumb_dir=$thumb_parent.$thumb_array[0].'/'.$thumb_array[1].'/';
if (is_date($thumb_array[1]) && !is_dir($thumb_dir)) mkdir($thumb_dir);
}
*/
if ($ml == 1) {
$image_path = '../' . $image_path;
$thumb_path = '../' . $thumb_path;
}
if (!is_file($image_path)) return;
$image_size = getimagesize($image_path);
switch ($thumb_pro) {
case 1:
$image_width = $image_size[0];
$image_height = $image_size[1];
if ($image_size[0] > $thumb_width && $image_size[1] > $thumb_height) {
$image_width = $image_size[0] / $image_size[1] * $thumb_height;
$image_height = $thumb_height;
if ($image_width > $thumb_width) {
$image_width = $thumb_width;
$image_height = $image_size[1] / $image_size[0] * $thumb_width;
}
} elseif ($image_size[0] > $thumb_width && $image_size[1] <= $thumb_height) {
$image_width = $thumb_width;
$image_height = $image_size[1] / $image_size[0] * $thumb_width;
} elseif ($image_size[1] > $thumb_height && $image_size[0] <= $thumb_width) {
$image_width = $image_size[0] / $image_size[1] * $thumb_height;
$image_height = $thumb_height;
}
break;
case 2:
$image_width = $thumb_width;
$image_height = $image_size[1] / $image_size[0] * $thumb_width;
if ($image_size[0] < $thumb_width) {
$image_width = $image_size[0];
$image_height = $image_size[1];
}
break;
case 3:
$image_width = $image_size[0] / $image_size[1] * $thumb_height;
$image_height = $thumb_height;
if ($image_size[1] < $thumb_height) {
$image_width = $image_size[0];
$image_height = $image_size[1];
}
break;
case 4:
//等比缩放,居中显示
$old_width = $image_size[0];
$old_height = $image_size[1];
// 计算缩放比例
$scale = min($thumb_width / $old_width, $thumb_height / $old_height);
$image_width = round($scale * $old_width);
$image_height = round($scale * $old_height);
break;
default:
$image_width = $thumb_width;
$image_height = $thumb_height;
break;
}
switch ($image_size[2]) {
case 1: //gif
$image_path = imagecreatefromgif($image_path);
break;
case 2: //jpg
$image_path = imagecreatefromjpeg($image_path);
break;
case 3: //png
$image_path = imagecreatefrompng($image_path);
imagesavealpha($image_path, true);
break;
case 6: //bmp
break;
}
//$image = imagecreatetruecolor($image_width, $image_height);
$image = imagecreatetruecolor($thumb_width, $thumb_height);
if ($image_size[2] == 3) {
//imagealphablending($image, false);
//imagesavealpha($image, true);
$transparentColor = imagecolorallocatealpha($image, 255, 255, 255, 127); // 最后一个参数是alpha值,127表示50%透明
imagefill($image, 0, 0, $transparentColor);
} else {
$color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $color);
}
// 计算居中坐标
$dstX = ($thumb_width - $image_width) / 2;
$dstY = ($thumb_height - $image_height) / 2;
imagecopyresampled($image, $image_path,$dstX,$dstY, 0, 0, $image_width, $image_height, $image_size[0], $image_size[1]);
switch ($image_size[2]) {
case 1: //gif
imagegif($image, $thumb_path, $thumb_quality);
break;
case 2: //jpg
imagejpeg($image, $thumb_path, $thumb_quality);
break;
case 3: //png
imagepng($image, $thumb_path);
break;
case 6: //bmp
break;
}
imagedestroy($image);
}
}
目前有 0 条留言 其中:访客:0 条, 博主:0 条