控制器

if($model->load(Yii::$app->request->post()))
        {

//原图
            $model->img = UploadedFile::getInstance($model, 'img');
            $imgname=$model->img->name = time().$model->img->name;
    
            //$model->img->saveAs('./upload/image/' . $model->img->baseName . '.' . $model->img->extension);
            
            //设定上传目录
            $path=Yii::$app->basePath.'/web/upload/image/'.$imgname;
            //上传原图 图片
            $model->img->saveAs($path);

//获取上传原图文件的名称   
            $image=$model->img;
            $img=$image->name;
            //echo $img;die;            
            //利用扩展生成缩略图
            $im = null;
            //取图片类型
            $imagetype = strtolower($model->img->extension);
            if($imagetype == 'gif')
                $im = imagecreatefromgif($path);
            else if ($imagetype == 'jpg')
                $im = imagecreatefromjpeg($path);
            else if ($imagetype == 'png')
                $im = imagecreatefrompng($path);
           
            //按时间生成新文件名
            $newName=$model->img->baseName.'_thumb_'.'.'.$model->img->extension;
            //设定缩略图的存放目录+名字
            $thumb_path=Yii::$app->basePath.'/web/upload/image/image_thumb/'.$newName;
            //生成缩略图
            $sql=$model->resizeImage($im,800,450,$thumb_path,$model->img->extension);
    }

在model 模型层里添加 resizeImage 方法

public static function resizeImage($im, $maxwidth, $maxheight, $name,$filetype) {
        $pic_width = imagesx ( $im );
        $pic_height = imagesy ( $im );

if (($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) {
            if ($maxwidth && $pic_width > $maxwidth) {
                $widthratio = $maxwidth / $pic_width;
                $resizewidth_tag = true;
            }
            
            if ($maxheight && $pic_height > $maxheight) {
                $heightratio = $maxheight / $pic_height;
                $resizeheight_tag = true;
            }
            
            if ($resizewidth_tag && $resizeheight_tag) {
                if ($widthratio < $heightratio)
                    $ratio = $widthratio;
                else
                    $ratio = $heightratio;
            }
            
            if ($resizewidth_tag && ! $resizeheight_tag)
                $ratio = $widthratio;
            if ($resizeheight_tag && ! $resizewidth_tag)
                $ratio = $heightratio;
            
            $newwidth = $pic_width * $ratio;
            $newheight = $pic_height * $ratio;
            
            if (function_exists ( "imagecopyresampled" )) {
                $newim = imagecreatetruecolor ( $newwidth, $newheight );
                imagecopyresampled ( $newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height );
            } else {
                $newim = imagecreate ( $newwidth, $newheight );
                imagecopyresized ( $newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height );
            }
            
            imagejpeg ( $newim, $name );
            imagedestroy ( $newim );
        } else {
            //$name = $name . $filetype;//这句好像多余了
            imagejpeg ( $im, $name );
        }
    }

很简单,,这样就可以了

Yii 框架生成缩略图的更多相关文章

  1. Yii 图片FTP批量上传 并生成缩略图

    图片批量上传,前台使用 uploadify.swf,这个就不介绍了.这里使用两个扩展,一个是FTP上传的扩展,还有一个是生成缩略图的扩展地址:http://www.yiiframework.com/e ...

  2. YII框架路由和URL生成

    路由和URL生成 当一个YII应用开始处理一个请求的时候,它首先要做的便是将请求的URL转化成一个路由.路由的作用是用于后续实例化相应的控制器和操作,以便处理请求,整个处理过程便叫做路由.路由的逆过程 ...

  3. yii php 图片上传与生成缩略图

    今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图              ($pic_action_url = $this->createAbsoluteUrl('h ...

  4. PHP.24-TP框架商城应用实例-后台1-添加商品功能、钩子函数、在线编辑器、过滤XSS、上传图片并生成缩略图

    添加商品功能 1.创建商品控制器[C] /www.test.com/shop/Admin/Controller/GoodsController.class.php <?php namespace ...

  5. Yii 框架学习--01 框架入门

    Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...

  6. 使用AVFoundation仅仅生成缩略图,不进行播放视频(本地和网络文件都可以创建视频缩略图)

    使用MPMoviePlayerController来生成缩略图足够简单,但是如果仅仅是是为了生成缩略图而不进行视频播放的话,此刻使用 MPMoviePlayerController就有点大材小用了.其 ...

  7. yii框架

    Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能.Yii是最有效率的PHP框架之一.Yii是创始人 ...

  8. Yii 框架表单验证---实例

  9. YII框架源码分析(百度PHP大牛创作-原版-无广告无水印)

           YII 框架源码分析    百度联盟事业部——黄银锋 目 录 1. 引言 3 1.1.Yii 简介 3 1.2.本文内容与结构 3 2.组件化与模块化 4 2.1.框架加载和运行流程 4 ...

随机推荐

  1. OC IOS屏幕分辨率

    CGRect screenRect=[UIScreenmainScreen].bounds; CGSize screenSize=screenRect.size; //屏幕分辨率 screenSize ...

  2. HTML,XML中的转义字符

    HTML中的转义字符 HTML中<, >,&等有特别含义,(前两个字符用于链接签,&用于转义),不能直接使用.使用这三个字符时,应使用他们的转义序列,如下所示: & ...

  3. 伪类选择器:root的妙用

    css3的元素旋转功能非常强大,也非常吸引人,但是很多时候因为浏览器使用率的问题,我们必需要想办法兼容一些低版本的浏览器,特别是ie这朵奇葩. 想要实现元素旋转本来很简单的一个属性就能实现,那就是tr ...

  4. Oracle数据库—— 事务处理与并发控制

    一.涉及内容 1.理解事务的概念和几个特性. 2.熟练掌握事务管理命令的使用. 3.理解并发操作的概念和数据库锁的类型. 二.具体操作 (12.5 实验) 1. 分析以下代码,说出代码中的哪些部分体现 ...

  5. MySQLdb模块的安装

    在WINDOWS环境连接利用python连接MYSQL数据库的时候,需要安装python工具包MySQL-python,但是直接用pip install安装会出错,错误信息如下: _mysql.c(4 ...

  6. js跳转到页面中指定的hash

    location.hash = "#filter_moreClue";

  7. [java] 40个Java多线程问题总结

    40个问题汇总 1.多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡.所谓"知其然知其所以然","会用 ...

  8. Linux环境下vsftpd参数配置

    很久之前就用过vsftpd,但总是忘了参数该如何配置,今天特地有搜索了一遍,把配置方法整理如下: (1)检查是否已安装vsftpd #rpm -qa | grep vsftpd vsftpd--.el ...

  9. 【KVM】Ubuntu14.04 安装KVM

    1. 首先检查系统是否支持CPU虚拟化 # egrep -o "svm|vmx" /proc/cpuinfo 若显示如下类似信息,则说明支持CPU虚拟化 vmx vmx ... v ...

  10. 【Struts2学习笔记-4】包含其他配置文件

    包含其他配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLI ...