yii实现图片上传及缩略图生成的方法

2015-01-24信息快讯网

这篇文章主要介绍了yii实现图片上传及缩略图生成的方法,详细分析了图片的上传及缩略图的生成原理与实现方法,是非常实用的技巧,需要的朋友可以参考下

本文实例讲述了利用yii框架来实现图片上传功能并在上传成功之后自动生成缩略图的方法,分享给大家供大家参考。具体实现方法如下:

Action文件:

<?php
/**
 * TestController.php
 * Created on: 2014-1-26 12:59:36 by Outsider
 */
class TestController extends CController {
 
    /**
     * 缩略图片生成
     * @ path 图片路径
     * @ width 图片宽度
     * @ height 图片高度
     */
    public function actionGetThumb($path, $w, $h) {
        $file_name = md5($path . $w . $h);
        if (file_exists('./temp/' . $file_name . '.jpg')) {
            header('location:/temp/' . $file_name . '.jpg');
            Yii::app()->end();
        }
        Yii::import("ext.EPhpThumb.EPhpThumb");
        $thumb = new EPhpThumb();
        $thumb->init();
        $thumb->create('.' . $path)
                ->adaptiveResize($w, $h)
                ->save('./temp/' . $file_name . '.jpg')
                ->show();
    }
 
    /*
     * 图片显示
     */
 
    public function actionList() {
        $attache = Attache::model();
        $list = $attache->findAll();
        $this->render('list', array('list' => $list));
        die;
    }
 
    /**
     * 文件上传
     */
    public function actionIndex() {
        $path = getcwd() . 'uploads';
        $dir = DIRECTORY_SEPARATOR . date('Y') . DIRECTORY_SEPARATOR . date('m');
        $dir = str_replace("\", "/", $dir);
        $uploads_dir = str_replace("\", "/", $path . $dir);
        if (!is_dir($uploads_dir) || !is_writeable($uploads_dir)) {
            mkdir($uploads_dir, 0777, TRUE);
            touch($uploads_dir . '/index.html');
        }
        $uploaded = false;
        $model = new Upload();
        if (isset($_POST['Upload'])) {
            $model->attributes = $_POST['Upload'];
            $file = CUploadedFile::getInstance($model, 'file');
            $newName = substr(md5($file->extensionName . round((microtime(true) * 1000))), 0, 17) . '.' . $file->extensionName; 
            $file_name = $uploads_dir . '/' . $newName;
            if ($model->validate()) {
                $attache = new Attache();
                $uploaded = $file->saveAs($file_name, TRUE);
                $attache->name = $file->getName();
                $attache->path = $dir . '/' . $newName;
                $attache->create_time = time();
                $attache->save();
            }
        }
 
        $this->render('index', array(
            'model' => $model,
            'uploaded' => $uploaded,
            'dir' => $uploads_dir,
        ));
    }
}

Upload.php:

<?php
class Upload extends CFormModel {
 
    public $file;
 
    public function rules() {
        return array(
            array('file', 'file', 'types' => 'jpg, gif, png,zip'),
        );
    }
}

图片显示页面:

自定义图片大小,缩略图自动生成

<?php
/**
 * list.php
 * Created on: 2014-1-26 13:12:01 by Outsider
 */
?>
<?php foreach ($list as $v): ?>
    <img src="<?php echo Yii::app()->createUrl('test/getThumb', array('path' => '/uploads' . $v['path'], 'w' => '150', 'h' => '150')) ?>">
<?php endforeach; ?>

图片上传表单:

<?php if($uploaded):?>
<p>File was uploaded. Check <?php echo $dir?>.</p>
<?php endif ?>
<?php echo CHtml::beginForm('','post',array
        ('enctype'=>'multipart/form-data'))?>
    <?php echo CHtml::error($model, 'file')?>
    <?php echo CHtml::activeFileField($model, 'file')?>
    <?php echo CHtml::submitButton('Upload')?>
<?php echo CHtml::endForm()?>

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

php使用正则表达式获取图片url的方法
PHP上传文件时自动分配路径的方法
PHP中使用php5-ffmpeg撷取视频图片实例
PHP实现的简易版图片相似度比较
phplot生成图片类用法详解
php静态文件生成类实例分析
php采集内容中带有图片地址的远程图片并保存的方法
Yii实现多数据库主从读写分离的方法
php生成excel列名超过26列大于Z时的解决方法
php+jQuery.uploadify实现文件上传教程
Yii中使用PHPExcel导出Excel的方法
Yii框架调试心得--在页面输出执行sql语句
使用PHP实现阻止用户上传成人照片或者裸照
Yii框架在页面输出执行sql语句以方便调试的实现方法
thinkphp3.2.2实现生成多张缩略图的方法
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
php生成二维码时出现中文乱码的解决方法
php判断文件上传类型及过滤不安全数据的方法
php可生成缩略图的文件上传类实例
Yii配置文件用法详解
Dwz与thinkphp整合下的数据导出到Excel实例
yii的CURD操作实例详解
Yii的CDbCriteria查询条件用法实例
php生成随机颜色方法汇总
Yii框架中memcache用法实例
yii中widget的用法
Yii使用ajax验证显示错误messagebox的解决方法
php获取CSS文件中图片地址并下载到本地的方法
php生成html文件方法总结
PHP静态文件生成类实例
配置php.ini实现PHP文件上传功能
PHP生成不重复标识符的方法
PHP中上传多个文件的表单设计例子
PHP GD库生成图像的几个函数总结
PHP图片处理之图片背景、画布操作
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
PHP判断一个gif图片是否为动态图片的方法
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
一个经典的PHP文件上传类分享
php多个文件及图片上传实例详解
PHP文件上传判断file是否己选择上传文件的方法
©2014-2024 dbsqp.com