图片上传类php,一个完整的图片上传php类

/**************************************

seesaw associates | http://seesaw.net

client:

file:

description:

Copyright (C) 2008 Matt Kenefick(.com)

**************************************/

class mk_imageUpload{

var $max_size;

var $allowed_types;

var $thumb_height;

var $dest_dir;

var $extensions;

var $max_height;

var $max_main_height;

var $last_ext;

var $last_pid;

var $last_uid;

var $image_file;

var $image_field;

function __construct( $maxHeightMain, $maxHeightThumb, $destDir ){

$this->max_size = (1024/2)*1000; // 750kb

$this->allowed_types = array( 'jpeg', 'jpg', 'pjpeg', 'gif', 'png' );

$this->extensions = array(

'image/jpeg' => '.jpg',

'image/gif' => '.gif',

'image/png' => '.png',

'image/x-png' => '.png',

'image/pjpeg' => '.jpg'

);

$this->dest_dir = $destDir;

$this->max_height = $maxHeightThumb;

$this->max_main_height = $maxHeightMain;

}

function putImage( $formname, $newName ){

$this->image_field = $formname;

if( $this->getImage() ){

// Check for errors

if ( !$this->checkType() )

return $this->throwError(2);

if ( !$this->checkFileSize() )

return $this->throwError(1);

// Get Image

$img = $this->image_file;

// Check seize

if ( !$this->checkImageSize() )

return $this->throwError(3);

// Get image dimensinos

$size = $this->getImageSize();

$size['width'] = $size[0];

$size['height'] = $size[1];

$ratio = $this->max_height/$size['height'];

$maxheight = $this->max_height;

$maxwidth = $size['width'] * $ratio;

// Create Thumbnail

$s_t = $this->resizeImage( $size, $img, $maxwidth, $maxheight,$newName,'s' );

if( $size['height'] > $this->max_main_height ){

$ratio = $this->max_main_height/$size['height'];

$maxheight = $this->max_main_height;

$maxwidth = $size['width'] * $ratio;

}else{

$maxheight = $size['height'];

$maxwidth = $size['width'];

}

// Create Large rescaled

$s_l = $this->resizeImage( $size, $img, $maxwidth, $maxheight,$newName,'l' );

// remove temporary file

unlink($img['tmp_name']);

if( $s_t && $s_l ){

$nm = split('_',$newName);

$this->last_ext = $this->extensions[$size['mime']];

$this->last_pid = $nm[0];

$this->last_uid = $nm[1];

return 'ok';

}else{

return $this->throwError( 4 );

}

}else{

return $this->throwError( 2 );

}

}

function resizeImage($size,$img,$maxwidth,$maxheight,$newName,$ext){

// Create a thumbnail

if($size['mime'] == "image/pjpeg" || $size['mime'] == "image/jpeg"){

$new_img = imagecreatefromjpeg($img['tmp_name']);

}elseif($size['mime'] == "image/x-png" || $size['mime'] == "image/png"){

$new_img = imagecreatefrompng($img['tmp_name']);

}elseif($size['mime'] == "image/gif"){

$new_img = imagecreatefromgif($img['tmp_name']);

}

if (function_exists('imagecreatetruecolor')){

$resized_img = imagecreatetruecolor($maxwidth,$maxheight);

}else{

return("Error: Please make sure your server has GD library ver 2+");

}

imagecopyresized($resized_img, $new_img, 0, 0, 0, 0, $maxwidth, $maxheight, $size['width'], $size['height']);

if($size['mime'] == "image/pjpeg" || $size['mime'] == "image/jpeg"){

$success = ImageJpeg ($resized_img,$this->dest_dir.$newName.'_'.$ext.$this->extensions[$size['mime']]);

}elseif($size['mime'] == "image/x-png" || $size['mime'] == "image/png"){

$success = ImagePNG ($resized_img,$this->dest_dir.$newName.'_'.$ext.$this->extensions[$size['mime']]);

}elseif($size['mime'] == "image/gif"){

$success = ImageGIF ($resized_img,$this->dest_dir.$newName.'_'.$ext.$this->extensions[$size['mime']]);

}

// Remove temporary images

ImageDestroy ($resized_img);

ImageDestroy ($new_img);

return $success;

}

function getImage(){

if( isset($_FILES[$this->image_field]) && is_uploaded_file($_FILES[$this->image_field]['tmp_name']) ){

$this->image_file = $_FILES[$this->image_field];

return true;

}

return false;

}

function returnImg(){

return $this->image_file;

}

function getImageSize(){

$img = $this->returnImg();

return getimagesize($img['tmp_name']);

}

function checkImageSize(){

$size = $this->getImageSize();

if( $size[1] < $this->max_height )

return false;

return true;

}

function checkFileSize(){

$img = $this->returnImg();

if( $img['size'] > $this->max_size )

return false;

return true;

}

function checkType(){

$img = $this->returnImg();

$type = split('/',$img['type']);

if( !in_array( $type[1], $this->allowed_types ) )

return false;

return true;

}

function throwError($val){

switch($val){

case 1: return 'Error: File size is too large';

break;

case 2: return 'Error: Improper file format';

break;

case 3: return 'Error: Your image is too small';

break;

case 4: return 'Error: There was an error creating the images';

break;

}

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值