PHP代码
有时候长传的图片太大,或者格式不对那么这时候就需要处理一下上传的数据,下面给出一个图片处理类供大家参考
< ?php
/**
* 功能:生成缩略图
* 作者:phpox
* 日期:Thu May 17 09:57:05 CST 2007
*/
class CreatMiniature
{
//公共变量
var $srcFile = ""; //原图
var $echoType; //输出图片类型,link--不保存为文件;file--保存为文件
var $im = ""; //临时变量
var $srcW = ""; //原图宽
var $srcH = ""; //原图高
//设置变量及初始化
function SetVar($srcFile, $echoType)
{
if (!file_exists($srcFile)) {
echo '源图片文件不存在!';
exit();
}
$this - >srcFile = $srcFile;
$this - >echoType = $echoType;
$info = "";
$data = GetImageSize($this - >srcFile, $info);
switch ($data[2])
{
case 1:
if (!function_exists("imagecreatefromgif")) {
echo "你的GD库不能使用GIF格式的图片,请使用Jpeg或PNG格式!<a href='javascript:go(-1);'>返回</a>";
exit();
}
$this - >im = ImageCreateFromGIF($this - >srcFile);
break;
case 2:
if (!function_exists("imagecreatefromjpeg")) {
echo "你的GD库不能使用jpeg格式的图片,请使用其它格式的图片!<a href='javascript:go(-1);'>返回</a>";
exit();
}
$this - >im = ImageCreateFromJpeg($this - >srcFile);
break;
case 3:
$this - >im = ImageCreateFromPNG($this - >srcFile);
break;
}
$this - >srcW = ImageSX($this - >im);
$this - >srcH = ImageSY($this - >im);
}
//生成扭曲型缩图
function Distortion($toFile, $toW, $toH)
{
$cImg = $this - >CreatImage($this - >im, $toW, $toH, 0, 0, 0, 0, $this - >srcW, $this - >srcH);
return $this - >EchoImage($cImg, $toFile);
ImageDestroy($cImg);
}
//生成按比例缩放的缩图
function Prorate($toFile, $toW, $toH)
{
$toWH = $toW / $toH;
$srcWH = $this - >srcW / $this - >srcH;
if ($toWH <= $srcWH)
{
$ftoW = $toW;
$ftoH = $ftoW * ($this - >srcH / $this - >srcW);
}
else
{
$ftoH = $toH;
$ftoW = $ftoH * ($this - >srcW / $this - >srcH);
}
if ($this - >srcW > $toW || $this - >srcH > $toH)
{
$cImg = $this - >CreatImage($this - >im, $ftoW, $ftoH, 0, 0, 0, 0, $this - >srcW, $this - >srcH);
return $this - >EchoImage($cImg, $toFile);
ImageDestroy($cImg);
}
else
{
$cImg = $this - >CreatImage($this - >im, $this - >srcW, $this - >srcH, 0, 0, 0, 0, $this - >srcW, $this - >srcH);
return $this - >EchoImage($cImg, $toFile);
ImageDestroy($cImg);
}
}
//生成最小裁剪后的缩图
function Cut($toFile, $toW, $toH)
{
$toWH = $toW / $toH;
$srcWH = $this - >srcW / $this - >srcH;
if ($toWH <= $srcWH)
{
$ctoH = $toH;
$ctoW = $ctoH * ($this - >srcW / $this - >srcH);
}
else
{
$ctoW = $toW;
$ctoH = $ctoW * ($this - >srcH / $this - >srcW);
}
$allImg = $this - >CreatImage($this - >im, $ctoW, $ctoH, 0, 0, 0, 0, $this - >srcW, $this - >srcH);
$cImg = $this - >CreatImage($allImg, $toW, $toH, 0, 0, ($ctoW - $toW) / 2, ($ctoH - $toH) / 2, $toW, $toH);
return $this - >EchoImage($cImg, $toFile);
ImageDestroy($cImg);
ImageDestroy($allImg);
}
//生成背景填充的缩图
function BackFill($toFile, $toW, $toH, $bk1 = 255, $bk2 = 255, $bk3 = 255)
{
$toWH = $toW / $toH;
$srcWH = $this - >srcW / $this - >srcH;
if ($toWH <= $srcWH)
{
$ftoW = $toW;
$ftoH = $ftoW * ($this - >srcH / $this - >srcW);
}