yii 图片上传 图片处理

用yii自带的CUploadfile进行图片的上传,因为这个类只提供上传的功能,并没有图片的处理功能比如图片的缩减、锐化、旋转等,所以必须借助yii的扩展image来实现。

一、图片上传

数据表:

CREATE TABLE `img_show` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(150) DEFAULT NULL,
  `url` varchar(100) DEFAULT NULL,
  `img_path` varchar(150) DEFAULT NULL,
  `handle_img_path` varchar(150) DEFAULT NULL,
  `add_time` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8

用gii生成对应的model、curd和controller,更改如下:

model:

public function rules()
    {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array(‘add_time‘, ‘numerical‘, ‘integerOnly‘=>true),
            array(‘title, img_path, handle_img_path‘, ‘length‘, ‘max‘=>150),
            array(‘url‘, ‘length‘, ‘max‘=>100),
            array(‘img_path‘,
                ‘file‘,    //定义为file类型
                //  ‘allowEmpty‘=>true,
                ‘types‘=>‘jpg,png,gif,doc,docx,pdf,xls,xlsx,zip,rar,ppt,pptx‘,   //上传文件的类型
                ‘maxSize‘=>1024*1024*10,    //上传大小限制,注意不是php.ini中的上传文件大小
                ‘tooLarge‘=>‘文件大于10M,上传失败!请上传小于10M的文件!‘
            ),
            // The following rule is used by search().
            // @todo Please remove those attributes that should not be searched.
            array(‘id, title, url, img_path, handle_img_path, add_time‘, ‘safe‘, ‘on‘=>‘search‘),
        );
    }

controller:

public function actionCreate()
    {
        $model=new ImgShow;

        if(isset($_POST[‘ImgShow‘]))
        {
            $model->attributes=$_POST[‘ImgShow‘];
            $model->add_time = time();

            //获取一个CUploadfile的实例
            $file = CUploadedFile::getInstance($model,‘img_path‘);
            //判断实例化是否成功 将图片重命名
            if(is_object($file)&&get_class($file) === ‘CUploadedFile‘){
                $model->img_path = ‘./images/upfile/file‘.time().‘_‘.rand(0,9999).‘.‘.$file->extensionName;
                $file->saveAs($model->img_path);
            }
            //对图片进行处理
           /* $image = Yii::app()->image->load($model->img_path);
            $image->resize(600, 300)->rotate(-45)->quality(75)->sharpen(20);
            $model->handle_img_path = ‘./images/upfile/file‘.time().‘_‘.rand(0,9999).‘_small‘.‘.‘.$file->extensionName;
            $image->save($model->handle_img_path);*/

            if($model->save())
                $this->redirect(array(‘view‘,‘id‘=>$model->id));
        }

        $this->render(‘create‘,array(
            ‘model‘=>$model,
        ));
    }

views:

<div class="form">

<?php $form=$this->beginWidget(‘CActiveForm‘, array(
    ‘id‘=>‘img-show-form‘,
    ‘enableAjaxValidation‘=>false,
    ‘htmlOptions‘=>array(‘enctype‘=>‘multipart/form-data‘),
)); ?>

    <p>字段带<span class="required">*</span> 的为必填项.</p>
    <?php echo $form->errorSummary($model); ?>

    <div class="row">
        <?php echo $form->labelEx($model,‘title‘); ?>
        <?php echo $form->textField($model,‘title‘,array(‘size‘=>60,‘maxlength‘=>150)); ?>
        <?php echo $form->error($model,‘title‘); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,‘url‘); ?>
        <?php echo $form->textField($model,‘url‘,array(‘size‘=>60,‘maxlength‘=>100)); ?>
        <?php echo $form->error($model,‘url‘); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,‘img_path‘); ?>
<!--        --><?php //echo $form->textField($model,‘img_path‘,array(‘size‘=>60,‘maxlength‘=>150)); ?>
        <?php echo CHtml::activeFileField($model,‘img_path‘,array(‘size‘=>60,‘maxlength‘=>255)); ?>
        <?php echo $form->error($model,‘img_path‘); ?>
    </div>

    <!--<div class="row">
        <?php /*echo $form->labelEx($model,‘handle_img_path‘); */?>
        <?php /*echo $form->textField($model,‘handle_img_path‘,array(‘size‘=>60,‘maxlength‘=>150)); */?>
        <?php /*echo $form->error($model,‘handle_img_path‘); */?>
    </div>-->

    <!--<div class="row">
        <?php /*echo $form->labelEx($model,‘add_time‘); */?>
        <?php /*echo $form->textField($model,‘add_time‘); */?>
        <?php /*echo $form->error($model,‘add_time‘); */?>
    </div>-->

    <div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? ‘新增‘ : ‘更新‘); ?>
    </div>

<?php $this->endWidget(); ?>

</div><!-- form -->

在protect目录下新建文件夹:images/upfile   这样就可以上传图片了。

二、图片处理

下载image扩展:http://www.yiiframework.com/extension/image#hh1

按其文档进行相应的配置,将解压后后的文件夹image放在exetension下,将helper放在protected下,在main.php中配置如下:

 ‘import‘=>array(
        ‘application.models.*‘,
        ‘application.components.*‘,
        ‘application.helpers.*‘,
    ),
    // application components
    ‘components‘=>array(

        ‘image‘=>array(
            ‘class‘=>‘application.extensions.image.CImageComponent‘,
                // GD or ImageMagick
            ‘driver‘=>‘GD‘,
                // ImageMagick setup path
            ‘params‘=>array(‘directory‘=>‘/opt/local/bin‘),
            ),

配置完毕后,打开上面controller下的红色的注释部分,这样就可以对图片进行处理了。

yii 图片上传 图片处理

时间: 2024-10-06 14:32:09

yii 图片上传 图片处理的相关文章

spring mvc 图片上传,图片压缩、跨域解决、 按天生成目录 ,删除,限制为图片代码等相关配置

spring mvc 图片上传,跨域解决 按天生成目录 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ #fs.domains=182=http://172.16.100.182:18080,localhost=http://localhost:8080 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE be

spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置

spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ #fs.domains=182=http://172.16.100.182:18080,localhost=http://localhost:8080 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE b

图片上传,图片加水印,验证码制作

文件上传: 所用控件:FileUpload 使用时的思路: 1.判断用户是否选中了文件 FileUpload.FileName获取选中的文件名,判断长度,如果长度大于零就代表已经选择了文件 JS端:通过ID获取控件,然后控件的value获取选中的文件名 2.将文件保存到服务器上 FileUpload.SaveAs("绝对路径"); 3.获得绝对路径 先编写相对路径:比如"UpLoads/abc.txt" 再把路径映射成绝对路径:Server.MapPath(&quo

uedit 富文本编辑器 图片上传 图片服务器

uedit设置 修改uploader 类   源代码这个注释 $url = "upimg.com/uploadImg.php"; $tmpName = $file['name']; //上传上来的文件名 $tmpFile = $file['tmp_name']; //上传上来的临时存储路径 $tmpType = $file['type']; //上传上来的文件类型 $folder = 'goods_uedit'; //存储路径 //执行上传 $data = json_decode($t

Jquery自定义图片上传插件

1 概述 编写后台网站程序大多数用到文件上传,可是传统的文件上传控件不是外观不够优雅,就是性能不太好看,翻阅众多文件上传控件的文章,发现可以这样去定义一个文件上传控件,实现的文件上传的效果图如下: 2.该图片上传插件实现功能如下: 1>能够异步上传,上传成功之后,服务器返回响应结果:能够定义上传前和上传后自定义处理方式: 2>能够实现文件格式判断,过滤非图片文件: 3>服务端能够过滤重复上传的图片: 3.页面代码分析: 1>.Jquery图片上传插件代码如下: // 选中文件, 提

rails使用bootstrap3-wysiwyg可视化编辑器并实现自定义图片上传插入功能

之前在rails开发中使用了ckeditor作为可视化编辑器,不过感觉ckeditor过于庞大,有很多不需要的功能,而且图片上传功能不好控制不同用户可以互相删除图片,感觉很不好.于是考虑更改可视化编辑器,多方考虑选择了bootstrap3-wysiwyg,但是这个编辑器无法实现图片上传功能,还有换行使用br而不是p标签不是很好.于是考虑自定义完善其功能. 个人原创,版权所有,转载请注明原文出处,并保留原文链接: https://www.embbnux.com/2015/03/17/rails_u

图片上传组件开发

我就要自行车 - 需求整理 放眼WWW,一般的图片上传模块,主要就是实现了三个功能,图片的预览,图片的剪裁及预览,图片的上传,那我也就整这么一个吧,再细化一下需求. 图片的预览 用户使用:用户点击“选择图片”,弹出文件浏览器,可以选择本地的图片,点击确认后,所选图片会按照原始比例出现在页面的浏览区域中. 组件调用:开发者可以自己定义图片预览区域的大小,并限定所传图片的文件大小和尺寸大小. 图片的剪裁 用户使用:用户根据提示,在预览区域的图片上拖动鼠标框出想要上传的图片区域,并且能在结果预览区域看

yii2.0 图片上传(摘录)

文章来源:http://blog.sina.com.cn/s/blog_88a65c1b0101izmn.html 下面小伙就带领大学学习一下 Yii2.0 的图片上传类的使用,还是老样子,如果代码样式混乱,我会附上截图供大家学习. 1.UserController.php 很重要的一步,那就是 use yii\web\UploadedFile; public function actionUpload(){ $model = new User(); user 为用户表model: if ($m

yii2.0下,单图片上传到搜狐云台以及图片上传到本机。

图片服务器接的是搜狐云台.在搜狐云台上有代码包,下载下来,放到yii框架的vendor下. yii2.0导入第三方库,很简单,写个autoload的文件,然后在入口脚本index.php中包含那个autoload文件就好了.具体到这个云台的库,只要包含代码中的autoload文件就好了. 简单介绍下搜狐云台的实现,用户会有一个对应的域名,然后选择建一些bucket,文件的上传下载都是在这个bucket中执行.函数调用在云台提供的文档中介绍的很清楚.这里就不再介绍了.同时我只从php的部分来介绍,