source($
sourcE);
}
}
/
**
* set the
source image
*
* @param
String|array $
source
*/
public function
source($
sourcE) {
if(!is_array($
sourcE))
{
$this->
source["name"] = $
source;
$this->
source["tmp_name"] = $
source;
$type = NULL;
$ext = strtolower(end(explode(".",$
sourcE))
);
switch($ext)
{
case "jpg" :
case "jpeg" : $type = "image/jpeg"; break;
case "gif" : $type = "image/gif"; break;
case "png" : $type = "image/png"; break;
}
$this->
source["type"] = $type;
} else
{
$this->
source = $
source;
}
$this->des
Tination = $this->
source["name"];
}
/
**
* resize the image
*
* @param int $width
* @param int $height
*/
public function resize($width = NULL,$height = NULL)
{
if(isset($this->
source["tmp_name"]) && file_exists($this->
source["tmp_name"]))
{
list($
source_width,$
source_height) = getimagesize($this->
source["tmp_name"]
);
if(($width == NULL) && ($height
!= NULL))
{
$width = ($
source_width * $height) / $
source_height;
}
if(($width
!= NULL) && ($height == NULL))
{
$height = ($
source_height * $width) / $
source_width;
}
if(($width == NULL) && ($height == NULL))
{
$width = $
source_width;
$height = $
source_height;
}
switch($this->
source["type"])
{
case "image/jpeg" : $created = imagecreatefromjpeg($this->
source["tmp_name"]
); break;
case "image/gif" : $created = imagecreatefromgif($this->
source["tmp_name"]
); break;
case "image/png" : $created = imagecreatefrompng($this->
source["tmp_name"]
); break;
}
$this->image = imagecreatetruecolor($width,$height
);
imagecopyresampled($this->image,$created,$width,$height,$
source_width,$
source_height
);
}
}
/
**
* add watermark on image
*
* @param
String $mark
* @param int $opac
* @param int $x_pos
* @param int $y_pos
*/
public function watermark($mark,$opac,$x_pos,$y_pos)
{
if(file_exists($mark) && ($this->image
!= ""))
{
$ext = strtolower(end(explode(".",$mark))
);
switch($ext)
{
case "jpg" :
case "jpeg" : $watermark = imagecreatefromjpeg($mark
); break;
case "gif" : $watermark = imagecreatefromgif($mark
); break;
case "png" : $watermark = imagecreatefrompng($mark
); break;
}
list($watermark_width,$watermark_height) = getimagesize($mark
);
$
source_width = imagesx($this->imag
E);
$
source_height = imagesy($this->imag
E);
if($x_pos == "top") $pos = "t"; else $pos = "b";
if($y_pos == "left") $pos .= "l"; else $pos .= "r";
$dest_x = 0;
$dest_y = 0;
switch($pos)
{
case "tr" : $dest_x = $
source_width - $watermark_width; break;
case "bl" : $dest_y = $
source_height - $watermark_height; break;
case "br" : $dest_x = $
source_width - $watermark_width; $dest_y = $
source_height - $watermark_height; break;
}
imagecop
ymerge($this->image,$watermark,$dest_x,$dest_y,$watermark_width,$watermark_height,$opac
);
}
}
/
**
* crop the image
*
* @param int $x
* @param int $y
* @param int $width
* @param int $height
*/
public function crop($x,$y,$height)
{
if(isset($this->
source["tmp_name"]) && file_exists($this->
source["tmp_name"]) && ($width > 10) && ($height > 10))
{
switch($this->
source["type"])
{
case "image/jpeg" : $created = imagecreatefromjpeg($this->
source["tmp_name"]
); break;
case "image/gif" : $created = imagecreatefromgif($this->
source["tmp_name"]
); break;
case "image/png" : $created = imagecreatefrompng($this->
source["tmp_name"]
); break;
}
$this->image = imagecreatetruecolor($width,$height
);
imagecopy($this->image,$x,$height
);
}
}
/
**
* create final image file
*
* @param
String $des
Tination
* @param int $quality
*/
public function create($des
Tination,$quality = 100)
{
if($this->image
!= "")
{
$extension = substr($des
Tination,-3,3
);
switch($extension)
{
case "gif" :
imagegif($this->image,$des
Tination,$quality
);
break;
case "png" :
$quality = ceil($quality/10) - 1;
imagepng($this->image,$quality
);
break;
default :
imagejpeg($this->image,$quality
);
break;
}
}
}
/
**
*
check if extension is valid
*
*/
public function validate_extension()
{
if(isset($this->
source["tmp_name"]) && file_exists($this->
source["tmp_name"]))
{
$exts = array("image/jpeg","image/pjpeg","image/png","image/x-png"
);
$ext = $this->
source["type"];
$valid = 0;
$this->ext = '.not_found';
if ($ext == $exts
[0] || $ext == $exts[1])
{
$valid = 1;
$this->ext = '.jpg';
}
// if ($ext == $exts[2])
{
// $valid = 1;
// $this->ext = '.gif';
// }
if ($ext == $exts[2] || $ext == $exts
[3])
{
$valid = 1;
$this->ext = '.png';
}
if($valid
!= 1)
{
$this->error .= "extension";
}
} else
{
$this->error .= "
source";
}
}
/
**
*
check if the size is correct
*
* @param int $max
*/
public function validate_size($ma
X) {
if(isset($this->
source["tmp_name"]) && file_exists($this->
source["tmp_name"]))
{
$max = $max * 1024;
if($this->
source["size"] >= $ma
X) {
$this->error .= "size";
}
} else
{
$this->error .= "
source";
}
}
/
**
*
check if the dimension is correct
*
* @param int $limit_width
* @param int $limit_height
*/
public function validate_dimension($limit_width,$limit_height)
{
if(isset($this->
source["tmp_name"]) && file_exists($this->
source["tmp_name"]))
{
list($
source_width,$
source_height) = getimagesize($this->
source["tmp_name"]
);
if(($
source_width > $limit_width) || ($
source_height > $limit_height))
{
$this->error .= "dimension";
}
} else
{
$this->error .= "
source";
}
}
/
**
* get the found errors
*
*/
public function error()
{
$error = array(
);
if(
Stristr($this->error,"
source")) $error[] = "找不到上传文件";
if(
Stristr($this->error,"dimension")) $error[] = "上传图片尺寸太大";
if(
Stristr($this->error,"extension")) $error[] = "不符合要求的格式";
if(
Stristr($this->error,"size")) $error[] = "图片文件太大";
return $error;
}
public function error_
String()
{
$error = "";
if(
Stristr($this->error,"
source")) $error .= "找不到上传文件 / ";
if(
Stristr($this->error,"dimension")) $error .= "上传图片尺寸太大 / ";
if(
Stristr($this->error,"extension")) $error .= "不符合要求的格式 / ";
if(
Stristr($this->error,"size")) $error .= "图片文件太大 / ";
if(eregi(" / $",$error))
{
$error = substr($error,-3
);
}
return $error;
}
public function ext()
{
return $this->ext;
}
}