<?php
/**
* @param1 string $src_image,原图路径
* @param2 float $sfb,缩放比例
* @param3 string $path,缩略图保存路径
* @param4 string &$error,错误说明
**/
function make_thumb_image($src_image, $sfb, $path, &$error) {
// 判断参数的可用性
if (!is_file($src_image)) {
$error = '原图不存在';
return false;
}
if (!is_dir($path)) {
$error = '保存位置不正确';
return false;
}
// 判断图片格式,选择适当函数
$src_info = getimagesize($src_image);
$allow = array(
'image/jpeg' => 'jpeg',
'image/gif' => 'gif',
'image/jpg' => 'jpg',
'image/png' => 'png',
'image/pjpeg' => 'jpeg'
);
// 匹配数据
if (!array_key_exists($src_info['mime'], $allow)) {
$error = "不允许非图片资源";
return false;
}
// 拼凑函数
$src_open = 'imagecreatefrom'.$allow[$src_info['mime']];
$src_save = 'image'.$allow[$src_info['mime']];
// 打开原图
$src = $src_open($src_image);
// 计算缩略图的宽高
$thumb_x = floor($src_info[0] * $sfb);
$thumb_y = floor($src_info[1] * $sfb);
// 创建缩略图资源
$dst = imagecreatetruecolor($thumb_x, $thumb_y);
// 采样复制
imagecopyresampled($dst, $src, 0, 0, 0,0, $thumb_x, $thumb_y, $src_info[0], $src_info[1]);
// 保存缩略图
// header('Content-type:image/png');
if (imagepng($dst, $path.($imagename = '/thumb_'.date('YmdHis').'_').$src_image)) {
$imagename = trim($imagename, '/').$src_image;
// 保存缩略图后删除源文件
unlink($src_image);
return $imagename;
} else {
$error = "save error!";
return false;
}
imagedestroy($src);
imagedestroy($dst);
}
PHP封装制作缩略图的函数
最新推荐文章于 2021-03-10 11:19:50 发布