<?PHP
类 ThumbnailException 延伸 异常
{
公共 函数 __construct($消息 = null,则$代码 = 0)
{
父:: __construct($消息,$代码);
error_log中('错误' 。$这个- > GETFILE()。'行' 。$这个- > getLine的()。“错误:” 这- >的GetMessage());
}
}
类 ThumbnailFileException:扩展 ThumbnailException {}
类 ThumbailNotSupportedException 延长 ThumbnailException的{}
类 缩略图
{
私人 $ maxWidth ;
私人 $的maxHeight ; / /略缩图象最大高度
私人 规模; / /是否按比例缩小
私人 膨胀; / /如何处理太小的图片(是否放大他们以填充略缩图)
私人 类型; / /能处理的图片类型
私人 imgLoaders / /保存加载图象的函数名称
私人 imgCreators ;
私人 来源; / /源图象
私人 $ sourceWidth ;
私人 sourceHeight美元;
私人 $ sourceMine ;
私人 拇指; / /略缩图象
私人 $ thumbWidth ;
私人 thumbHeight美元;
/ ************************************************* *************************************************
函数名称:__construct构造函数
功能:用于初始化类的变量
************************************************** ****************** /
公共 函数 __construct($ maxWidth ,maxHeight美元,规模 =真实,膨胀 =真)
{
$ - > maxHeight = $ maxHeight ;
$ - > maxWidth = $ maxWidth ;
- >规模= $规模;
- >膨胀= $膨胀;
- >类型= 阵列(“image / jpeg文件' ,'图像/ PNG ,图像/ GIF' ); / /定义能处理的类型
- > imgLoaders = 阵列( / /定义每种类型对应的加载函数
'image / jpeg文件' => 'imagecreatefromjpeg'
“图像/ PNG' => imagecreatefrompng“' ,
“图像/ GIF' => imagecreatefromgif“' ,
);
- > imgCreators = 阵列( / /定义每种类型对应的处理函数
'image / jpeg文件' => 'imagejpeg'
“图像/ PNG' => imagepng“' ,
“图像/ GIF' => imagegif“' ,
);
}
/ ************************************************* *************************************************
函数名称:的LoadFile
功能:加载本地文件
************************************************** ****************** /
公共 功能 的LoadFile($图像)
{
($变暗 = @ 和getimagesize (图片)) / /获得图片信息并判断
{
了抛出 新 ThumbnailFileException('无法找到图像:$图像) / /抛出错误
}
(in_array($变暗[ '哑剧' ],$这个- >“类型”))
{
$装载机 = $ - > imgLoaders [ $变暗[ '哑剧' ];
- >源= $装载机(图像); / /存储加载好了的图片--- imagecratefrom *
- > sourceWidth = $变暗[0];
- > sourceHeight = $变暗[1];
$ - > sourceMine = $变暗[ '哑剧' ];
$ - > initThumb() / /调用生成略缩图函数
返回 真;
}
其他
{
抛出 新 ThumbailNotSupportedException( “ 图像的MIME类型。$变暗[ '哑剧' 。'不suppord' ); / /抛出错误
}
}
/ ************************************************* *************************************************
函数名称的loaddata
功能:加载数据库里面的文件
************************************************** ****************** /
公共 函数 调用loadData($形象,$哑剧)
{
如果(in_array($哑剧,$这个- >“类型”))
{
如果($ - >源= imagecreatefromstring(图片)) / /从数据库里面加载图片
{
- > sourceWidth = imagesx($这个- >源); / /获得源图片的宽度
- > sourceHeight = imagesy($这个- >“源”); / /获得源图片的高度
- > sourceMine = $哑剧; / /获得源图片的类型
$ - > initThumb() / /调用生成略缩图函数
返回 真;
}
其他
{
抛出 新 ThumbnailFileException( “ 无法加载图像从字符串' ); / /抛出错误信息
}
}
其他
{
抛出 新的 ThumbailNotSupportedException(不suppord' );
}
}
/ ************************************************* *************************************************
函数名称:buildThumb
功能
************************************************** ****************** /
公共的 功能 buildThumb($文件 =空)
{
创作者 = $ - > imgCreators [ $ - > sourceMine];
如果(isset(的文件))
{
返回 的创造者($这个- >拇指,$文件); / /保存略缩图
}
其他
{
返回 的创造者($这个- >“拇指”);
}
}
公共 功能 getMine()
{
返回 $此- > sourceMine;
}
公共 功能 getThumbWidth()
{
返回 $此- > thumbWidth;
}
公共 功能 getThumbHeight()
{
在返回 $这个- > thumbHeight;
}
/ ************************************************* *************************************************
函数名称:initThumb
功能:为类处理缩放功能
************************************************** ****************** /
私人的 功能 initThumb()
{
如果($这个- >规模) / /判断是否按比例缩放
{
如果($ - > sourceWidth> $ - > sourceHeight)
{
- > thumbWidth = $ - > maxWidth;
$ - > thumbHeight 地板(
- > sourceHeight *($这个- > maxWidth / $此- > sourceWidth)
);
}
其他 ($ - > sourceWidth < $ - > sourceHeight)
{
$这个- > thumbHeight = $ - > maxHeight;
$ - > thumbWidth 地板(
$ - > sourceWidth *($ - > maxHeight / $ - > sourceHeight)
);
}
其他
{
- > thumbWidth = $ - > maxWidth;
$这个- > thumbHeight = $ - > maxHeight;
}
}
其他
{
- > thumbWidth = $ - > maxWidth;
$这个- > thumbHeight = $ - > maxHeight;
}
- >拇指= imagecreatetruecolor($ - > thumbWidth,$ - > thumbHeight) / /创建空白略缩图
如果($ - > sourceWidth <= $ - > maxWidth && $ - > sourceHeight <= $ - >的maxHeight && $这个- >充气==假)
{
- >拇指= $ - >源;
}
其他
{
imagecopyresampled(- >拇指,$此- >源,0,0,0,0, / /图片剪贴到略缩图?
$ - > thumbWidth,
$ - > thumbHeight,
$ - > sourceWidth,
- > sourceHeight
);
}
}
}
?>