php yii把pdf转成图片,yii实现图片上传及缩略图生成的方法

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

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

Action文件:

复制代码 代码如下:

/**

* 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中文网,转载请注明出处,感谢您的尊重!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下的安装命令行工具下载,linux系统程序安装(二)yum工具2-yum源及包下载

继续我们的yum工具应用之旅,yum工具之所以方便就是因为有方便的在线云库,实际工作中我们可能没办法链接互联网,或者我们想安装的程序原生源那么我们能不能用其他方式应用方便的yum源呢?一、使用光盘作为yum源1、将光盘挂载到/mnt目…

linux显卡内核修改,iTOP-4412开发板-驱动-linux显卡驱动的修改方法

本文档介绍迅为4412开发板的显卡分辨率修改方法。iTOP-4412 开发板支持 4.3 寸、7 寸和 9.7 寸等 lcd 显示屏。其中 4.3 寸屏是用的 cpu直接出来的 RGB 信号,7 寸屏和 9.7 寸屏是用的 LVDS 信号,硬件上使用了一个 RGB 转LVDS 的芯片实现的。我们来看下显…

linux-如何限制普通用户的磁盘使用空间-磁盘配额quota,Linux系统下如何进行磁盘配额Quota的设置...

Linux如何进行磁盘配额quota的设置通过quota进行磁盘配额,可以控制用户对磁盘空间和文件的控制,我们以一个实例作为说明,对2个用户user01、user02分别进行磁盘使用空间和创建文件的限制。首先,创建一个新的分区&#x…

linux一台机器如何安装两个mysql,在一台linux机器上启动两个mysql实例

环境:linux主机上已经yum安装了mysql,而且数据库正在运行。在不关闭/重启mysql的情况下,重新启动一个新的mysql实例,使用3307端口,实现一台机器上同时运行两个数据库实例。1、创建新的mysql实例数据存储目录&#xff1…

linux和windows启动,Linux和Windows双系统的启动

问题Linux和Windows双系统的启动解决方案在某些特殊情况下,服务器可能要安装双系统一个linux系统,一个windows系统这种情况下,安装顺序是,先装Windows系统,后装Linux这是因为,Linux的引导程序grub具备多系统…

体积最小桌面linux,Tiny Core Linux - 体积最小的精简 Linux 操作系统发行版之一 (仅10多MB)...

Tiny Core Linux (TCL) 是一款极体积极小且高度可扩展的微型 Linux 发行版,它将一个 Linux 操作系统精简到仅有 10 多 MB 左右的大小,似乎小巧得有点让人叹为观止!要知道无论是常见的 Ubuntu、CentOS、Debian 的体积动辄就是几百MB甚至要上GB…

linux下缓存命中测试,Linux 性能优化实战(倪朋飞)---查看缓存命中情况

cachestat 提供了整个操作系统缓存的读写命中情况。cachetop 提供了每个进程的缓存命中情况。但是,cachetop 并不把直接 I/O 算进来。安装 cachestat、cachetop:$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD$ ech…

linux suid提权原理,Linux SUID、SGID、sticky提权

S UID SGID SOID 核心就在 “S” ,S就是允许本圈子 用户有r,w,x ;例如:1、chmod sg test.txt 只允许testex.txt所在的组 员可以执行r,w,x2、chmod us test.txt2 只允许test.txt2的属主 执行r,w,x温馨提示:对SUID只需要有个了解就行了&#xf…

linux新建samba账户,ubuntu上创建账户和samba用户

系统环境:Linux ubuntu152 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64x86_64 GNU/Linux系统用户登录创建linux账户:1. sudo adduser username --home /home/username执行该命令后需要两次输入账户密码,连续回车&…

linux xorg.0.log,Red Hat无法登录,Cannot open log file /var/log/Xorg.0.log

命令截面输入ROOT帐号无效,几秒后弹出报错页面I cannot start the X server (your graphical interface ) It is likely it is not setup correctlyWould you like to view the X server output diagrose the problem?然后按YES后跳出Fatal server error:Cannot o…

c程序语言习题解答对编程有帮助吗,给C语言编程初学者的10个学习建议,助你学习事半功倍,不要错过...

对于初学者应该如何学习C语言编程开发技术,纵观中国目前整体行业来说,互联网IT行业 成为了拔尖的行业,IT互联网程序开发成了靠自己能力可以多挣一点钱,所以各个行业都在转行,其实互联网不存在饱和,只不过大…

跟世界打个招呼c语言编程,(一)helloworld

Idea下用SBT搭建Spark Helloworld没用过IDEA工具,听说跟Eclipse差不多,sbt在Idea其实就等于maven在Eclipse.Spark运行在JVM中,所以要在Idea下运行spark,就先要安装JDK 1.8 然后加入S ...菜鸟学Struts2——HelloWorld写在前面 自从工作后就过上了只有一个月记忆的生活,太健忘,很…

求一份100行左右的C语言程序,求4个C语言程序 每个100行左右 大一水平的

2008-06-30 回答//链表问题//电话薄实现:可以输入,输出,插入,删除联系人信息.#include#include#includetypedef struct student{char address[20];char name[20];char mail[7];;char phone[10];struct student *next;}LNode;void creat_list( LNode **h ) //请输入联系人信息{L…

c语言INT16与int,C中int,Uint,uint16等有什么区别以及用处

在C中,既然有了int,为什么还要有uint?特别是uint16,uint32等又有什么用?他们有什么区别?”----------------------------------------------------------------------------------------------------------…

指针使用c语言,指针的使用(C语言)

/*例8.1 通过指针变量访问整型变量*//*#include的作用是提供相关的信息(当在使用标准)*//*stdio.h:是C编译系统提供的一个文件名*//*只需要记住:在程序中用到系统提供的标准函数库中的输入输出函数时,需要在程序开头写上#include这一行*/#inc…

在c语言中优先级最低的是6,C语言中 *,<<,= ,->哪个优先级最低

满意答案nishiwodezmx推荐于 2016.03.13采纳率:46% 等级:12已帮助:6812人最高的是->(指向运算符)再到*再到>>(右移运算符)再到(赋值运算符)c语言运算符号:1级优先级 左结合() 圆括号[] 下标运算符-> 指向结构体成员运算符. 结…

队列的顺序数组c语言代码,队列-队列的顺序表示和实现

队列-队列的顺序表示和实现和顺序栈相类似,在利用顺序分配存储结构实现队列时,除了用一维数组描述队列中数据元素的存储区域之外,尚需设立两个指针front和rear分别指示“队头”和“队尾”的位置。为了在C语言中描述方便,在此我们约…

android代码打开数据库,Android打开和关闭数据库

与计算机编程中的许多事情一样,关闭SQLite数据库的时间没有单一的“正确进行”(如果您正在使用它,则通过SQLiteOpenHelper上的close(),否则对SQLiteDatabase执行close()).一个相当硬的规则是不要同时跨多个线程为同一个数据库使用多个SQLiteDatabase对象.这可能会让你遇到麻烦,…

android 链接分享到朋友圈,android 分享到微信朋友圈或微信好友

一、首先创建一个数字签名(keystore文件)这里不再讲述keystore的创建过程!二、用keystore给app签名,注意最后如下图所示图中的md5就是 申请apkid时所需的 签名,这里需要注意MD5需要将其中的“:”去掉并将其中的大写字母改为小写三…

android studio开源代码,Android Studio Set of source 代码源集

一、源集1、定义:Android Studio 按逻辑关系将每个模块的源代码和资源进行分组,这个分组叫做源集。2、main Module 源集包括其所有构建变体共用的代码和资源。这句话很关键,意思是,所有的其他构建变体,src/main是其共同…