This php image upload function is very complete and can fully meet various image upload needs
- /**************************************
- 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;
- }
- }
-
- }
-
- ?>
复制代码
|