zoukankan      html  css  js  c++  java
  • php图像处理

        function uploadlogo(){
            $category='Apply';
            $dir=C('ApplyDir');
            $upload = new ThinkUpload (); // 实例化上传类
            $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 );
        }
    

      

  • 相关阅读:
    android 底部菜单栏实现(转)
    android 用webView作为编辑器 各种问题
    android 自定图库(转)
    js document.queryCommandState() 各个参数
    自定义简单的按钮点击动画效果
    android 类似QQ底部输入框弹出键盘和面板冲突 布局闪动处理方案(转)
    android 自定义控件View在Activity中使用findByViewId得到结果为null
    Tinker 热修复框架 简单上手教程
    网页天气模块,包括当天天气和未来四天预报
    关于闭包(closure)的一些概念
  • 原文地址:https://www.cnblogs.com/panqingqiang/p/4414314.html
Copyright © 2011-2022 走看看