php图像处理

    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 );
    }

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。