您的位置:首页 > 编程语言 > PHP开发

php图像处理

2015-04-10 13:15 246 查看
function uploadlogo(){
$category='Apply';
$dir=C('ApplyDir');
$upload = new \Think\Upload (); // 实例化上传类
$upload->maxSize = 0; // 设置附件上传大小
$upload->exts =C('AllExts');
$uploadpath = $_SERVER ['DOCUMENT_ROOT'] . __ROOT__ . $dir . '/';
if (! file_exists ( $uploadpath )) {
UtilController::mkDirs($uploadpath);
}
$upload->rootPath = $uploadpath; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
$filename = date ( "YmdHis" ) . mt_rand ( 10000, 99999 );
$upload->saveName = $filename; // 设置上传的文件名
// 上传文件
$info = $upload->upload ();
if (! $info) { // 上传错误提示错误信息
$this->error ( $upload->getError () );
} else { // 上传成功
$json['source']=C ( 'Web_Server' ).__ROOT__.$dir.'/'.$info ['Filedata'] ['savepath'] . $info ['Filedata'] ['savename'] ;
//生成小图
$targetpath2=$uploadpath.$category.'Smallimg/';
UtilController::mkDirs($targetpath2);
UtilController::imagecropper($uploadpath.$info ['Filedata'] ['savepath'].$info ['Filedata'] ['savename'], 90, 90, $targetpath2.$info ['Filedata'] ['savename']);
$json['url']=C ( 'Web_Server' ) . __ROOT__ . $dir.'/'.$category.'Smallimg/'.$info ['Filedata'] ['savename'];
$this->ajaxReturn($json);
}
}


/**
* 循环创建文件夹
* @param unknown $path
* @param number $mode
*/
static  function mkDirs($path, $mode = 0755) {
$adir = explode ( '/', $path );
$dirlist = '';
$rootdir = array_shift ( $adir );
if (($rootdir != '.' || $rootdir != '') && ! file_exists ( $rootdir )) {
@mkdir ( $rootdir, $mode );
}
foreach ( $adir as $key => $val ) {
$dirlist .= "/" . $val;
$dirpath = $rootdir . $dirlist;
if (! file_exists ( $dirpath )) {
@mkdir ( $dirpath, $mode );
}
}
}


/**
* @param unknown $source_path 图片路径
* @param unknown $target_width 需要的宽度
* @param unknown $target_height 需要的高度
* @param unknown $target_path 目标路径
* @return boolean
* @author 潘庆强
*/
static function imagecropper($source_path, $target_width, $target_height, $target_path) {
$source_info = getimagesize ( $source_path );
$source_width = $source_info [0];
$source_height = $source_info [1];
$source_mime = $source_info ['mime'];
$source_ratio = $source_height / $source_width;
$target_ratio = $target_height / $target_width;

// 源图过高
if ($source_ratio > $target_ratio) {
$cropped_width = $source_width;
$cropped_height = $source_width * $target_ratio;
$source_x = 0;
$source_y = ($source_height - $cropped_height) / 2;
} 		// 源图过宽
elseif ($source_ratio < $target_ratio) {
$cropped_width = $source_height / $target_ratio;
$cropped_height = $source_height;
$source_x = ($source_width - $cropped_width) / 2;
$source_y = 0;
} 		// 源图适中
else {
$cropped_width = $source_width;
$cropped_height = $source_height;
$source_x = 0;
$source_y = 0;
}

switch ($source_mime) {
case 'image/gif' :
$source_image = imagecreatefromgif ( $source_path );
break;

case 'image/jpeg' :
$source_image = imagecreatefromjpeg ( $source_path );
break;

case 'image/png' :
$source_image = imagecreatefrompng ( $source_path );
break;

default :
return false;
break;
}

$target_image = imagecreatetruecolor ( $target_width, $target_height );
$cropped_image = imagecreatetruecolor ( $cropped_width, $cropped_height );

// 裁剪
imagecopy ( $cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height );
// 缩放
imagecopyresampled ( $target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height );

header ( 'Content-Type: image/jpeg' );
imagejpeg ( $target_image, $target_path );
imagedestroy ( $source_image );
imagedestroy ( $target_image );
imagedestroy ( $cropped_image );
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: