php 一个非常完整的图片上传类示例
内容摘要
这篇文章主要为大家详细介绍了php 一个非常完整的图片上传类示例,具有一定的参考价值,可以用来参考一下。
这个php图片上传类功能非常完善,完全可以满足各种图片上传需求,对此
这个php图片上传类功能非常完善,完全可以满足各种图片上传需求,对此
文章正文
这篇文章主要为大家详细介绍了php 一个非常完整的图片上传类示例,具有一定的参考价值,可以用来参考一下。
这个php图片上传类功能非常完善,完全可以满足各种图片上传需求,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下:
<?php
/**
* 图片上传类
*
* @param
* @arrange (www.idcnote.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;
}
}
}
/*** 来自:php教程(www.idcnote.com) ***/
?>
注:关于php 一个非常完整的图片上传类示例的内容就先介绍到这里,更多相关文章的可以留意
代码注释