/**
* 可扩展的缩略图生成函数
* 在http://yodoo.com的论坛里可以获得最新版本(注册用户)
* 演示效果也请登录http://yodoo.com看看,该站所有的缩略图(jpg,png)都是使用该函数生成的
*
* 转载请保留完整信息
*
* @author Austin Chin <austinfay@hotmail.com> http://yodoo.com
* @version $Revision: 1.7 $
*
*
* version
*
* + 表示增加的功能
* - 表示丢弃的功能
* C 表示修正的功能
* E 表示扩展了功能
*
* v1.5
* makeThumb($srcFile, $dstFile, $dstW, $dstH, $option=1)
*
* v1.6
* + 增加了剪切模式
* + $option 8: 宽度最佳缩放
* + $option 16: 高度最佳缩放
* makeThumb($srcFile, $dstFile, $dstW, $dstH, $option=1, $cutmode=0, $startX=0,
* $startY=0)
*
* v1.7
* E 返回值改为数组,第一个元素是代码 0 表示正常, 其它位错误代码;第二个元素是错误描述。
* 错误代码:
* -1 源文件不存在。
* -2 不支持的图片输出函数
* -3 不支持的图片创建函数
* -4 HTTP头信息已经输出,无法向浏览器输出图片。
* -5 无法检测输出的图片类型
* + 增加函数 message2Image 可以把字符串输出成图片格式
*/
/**
* 可扩展的缩略图生成函数
*
* @param string $srcFile 源文件
* @param string $srcFile 目标文件
* @param int $dstW 目标图片的宽度(单位:像素)
* @param int $dstH 目标图片的高度(单位:像素)
* @param int $option 附加参数,可以相加使用,如1+2(或者 1|2)表示同时执行1和2的功能。
* 1: 默认,输出到指定文件 2: 图片内容输出到浏览器 4: 不保持图片比例
* 8:宽度最佳缩放 16:高度最佳缩放
* @param int $cutmode 剪切模式 0: 默认模式,剪切模式 1: 左或上 2: 中 3: 右或下
* @param int $startX 剪切的起始横坐标(像素)
* @param int $startY 剪切的起始纵坐标(像素)
* @return array return[0]=0: 正常; return[0] 为错误代码 return[1] string: 错误描述
*/
define(OP_TO_FILE, 1); //输出到指定文件
define(OP_OUTPUT, 2); //图片内容输出到浏览器
define(OP_NOT_KEEP_SCALE, 4); //不保持图片比例, 即使用拉伸
define(OP_BEST_RESIZE_WIDTH, 8); //宽度最佳缩放
define(OP_BEST_RESIZE_HEIGHT, 16); //高度最佳缩放
define(CM_DEFAULT, 0); // 默认模式
define(CM_LEFT_OR_TOP, 1); // 左或上
define(CM_MIDDLE, 2); // 中
define(CM_RIGHT_OR_BOTTOM, 3); // 右或下
function makeThumb($srcFile, $dstFile, $dstW, $dstH, $option=OP_TO_FILE,
$cutmode=CM_DEFAULT, $startX=0, $startY=0) {
$img_type = array(1=>"gif", 2=>"jpeg", 3=>"png");
$type_idx = array("gif"=>1, "jpg"=>2, "jpeg"=>2, "jpe"=>2, "png"=>3);
if (!file_exists($srcFile)) {
return array(-1, "Source file not exists: $srcFile.");
}
$path_parts = @pathinfo($dstFile);
$ext = strtolower ($path_parts["extension"]);
if ($ext == "") {
return array(-5, "Can't detect output image's type.");
}
$func_output = "image" . $img_type[$type_idx[$ext]];
if (!function_exists ($func_output)) {
return array(-2, "Function not exists for output:$func_output.");
}
$data = @GetImageSize($srcFile);
$func_create = "imagecreatefro