joomla手动实现后台上传和缩略图入库扩展实现方法分享

所属分类: CMS教程 / 其它cms 阅读数: 1429
收藏 0 赞 0 分享
最近比较忙,没有时间写一些joomla教程,今天抽空来说说如何扩展上传图片的同时生成缩略图,这样就不用在显示图的时候设置宽度高度,而且可以让页面加载很快,对于图片展示类型网站和模版类网站,我想都是需要这样一个实用的功能的吧.joomla1.5版本没有自带这个功能,今天我就来实现,并且在上传的时候自动存入数据库.在数据库里面,我们用当前时间戳来保存图片名字,这样不会有重命名问题.如果你想保存原名字,那么你可以存入数据库。对于图片我们只保存一张图片文件的名字,缩略图我们使用前缀_时间戳来保存,时间戳和大图是一样的.这样可以减少一个字段。好了原理就是这样。

对于上传来的图片,我们需要进行处理,例如我们得到的图像代码

复制代码
代码如下:

$file = JRequest::getVar( 'template_full_image', '', 'files', 'array' );//获得传过来的图片
jimport('joomla.filesystem.file');
$filenameext=explode(".",$file['name']);
$filenameextcount=count($filenameext);
$outputfile= time().".".$filenameext[(int)$filenameextcount-1];
$filepath = JPath::clean(JPATH_ROOT.DS.'components/com_templateshow/upload/images/'.strtolower($outputfile));
if (!JFile::upload($file['tmp_name'], $filepath)) {
JError::raiseWarning(100, JText::_('Error. Unable to upload file'));
return;
}else{
$types = $filenameext[(int)$filenameextcount-1];
list($width, $height) = getimagesize($filepath);
$thumb = JPath::clean(JPATH_ROOT.DS.'components/com_templateshow/upload/images/s_'.strtolower($outputfile));
if('gif' == $types ){
$gif = imagecreatefromgif($filepath);
imagesavealpha($gif,true);
$gifc = imagecreate(156, 145);
imagealphablending($gifc,false);
imagesavealpha($gifc,true);
imagecopyresampled($gifc,$gif, 0, 0, 0, 0, 156, 145, $width, $height);
imagegif($gifc,$thumb);
}
if( 'jpg' ==$types || 'jpeg' ==$types ){
$gif = imagecreatefromjpeg($filepath);
$gifc = imagecreatetruecolor(156, 145);
imagecopyresampled($gifc,$gif, 0, 0, 0, 0, 156, 145, $width, $height);
imagejpeg($gifc,$thumb);
}
if( 'png' ==$types ){
$gif = imagecreatefrompng($filepath);
imagesavealpha($gif,true);
$gifc = imagecreatetruecolor(156, 145);
imagealphablending($gifc,false);
imagesavealpha($gifc,true);
imagecopyresampled($gifc,$gif, 0, 0, 0, 0, 156, 145, $width, $height);
imagepng($gifc,$thumb);
}
$row->template_full_image = strtolower($outputfile);
//缩略图文件赋值给字段 }

上边就是基本代码,我来说说基本流程,就是把传过来的图片,首先取得扩展名,然后记录当前时间戳,当作文件名字保存,上传这张图片,接着读取这张图片,对图片只能处理jpg和png和gif三种格式,也是我们常见的格式,由于这三种图片的处理,在PHP 手册里面也详细记述.我们知道jpg最好处理,一般不会有啥问题,但是gif由于背景透明,设置不对就会出现背景黑色,还有png也存在这样的问题,这里我用的if,也可以用其他语句.这里图片统一缩略大小156 X 146像素大小.数据可以自己改,我这是程序中部分代码,有些地方可能不严格,可能有bug,不过功能是实现的,处理方法当然多种多样,总的来说缩略图处理不难,更简单的办法是你可以写一个或者网上找一个不错的图片处理类,就可以实现上传自动生成缩略图,水印等功能.在这里我就不实现了.

  至于显示图片,我们只需要读取数据库图片名称,然后把地址连接上即可,由于缩略图和原图文件名有链接,我是用原图时间戳 1300000.jpg,那么缩略图s_1300000.jpg,这也是常见处理缩略图和原图的办法,时间戳可以保证图片不会覆盖.

以上是在joomla1.5版本中测试通过的,是一个项目部分代码,写的很烂,完全手写的,也没有找一些类,也是练习一下自己的php本身水平,技术比较差.最近学到的只是太多了,下次给你们说说joomla中如何实现ajax的get方式提交,实现模拟单选和复选,这里用的是我们常用的jquery库,并非其他ajax,我们javascript也不怎么样,主要是用jquery来写js代码.还有如何实现ajax搜索功能,这里的关键字通过空格隔开,使用到了多次查询连查,jquery检测,jquery插件from,以及正则在php应用.我的目的是,在学习joomla过程,学习php基本功以及jquery的开发,以及mysql数据库.有相同兴趣的朋友可以@我.

老规矩,附上源码部分,仅供参考,不能使用:下载我 /201205/yuanma/com_templateshow.rar

(本文原创 by Yoby)
更多精彩内容其他人还在看

08CMS v3.4 版本采集系统使用教程

在这个坛子打滚也有一年多了,也经历了08CMS两个大版本的更替,算的上是见证了官方的努力
收藏 0 赞 0 分享

08cms字数限制后台代码修改方法

08cms字数限制后台代码修改方法,使用08cms的朋友可以参考下。
收藏 0 赞 0 分享

初次安装Magento商城 后台报错的解决方法

今天初次安装Magento, 开始装的是英文版,后来又找到中文版,安装后在后台都有同一个错误,就是登陆后台,随便点击一个链接,都有报错
收藏 0 赞 0 分享

最土团购添加图片自动水印的解决方法

最土团购程序,是基于Web应用的B/S架构的团购网站建设解决方案的建站系统,它可以让用户高效、快速、低成本的构建个性化、专业化、强大功能的团购网站。
收藏 0 赞 0 分享

最土团购系统整合ucenter详细步骤说明[修正版]

最近有个客户使用了最土的团购系统,想整合论坛,提高人气,发现最土团购没有ucenter设置,只能通过ftp设置,通过下面的方法,很方便的解决了问题。
收藏 0 赞 0 分享

UC与最土团购整合 最土无法登陆和注册的解决方法

今天将UC与最土团购整合了下,后台提示通信成功但无法登陆与注册,经过排查原来是参数错误。
收藏 0 赞 0 分享

最土团购商品按价格排序实现方法分享

因为公司要实现商品按价格排序,网上都是收费的,为了省钱也为了体验下修改的乐趣,通过前台带推断出后台代码的实现方法。
收藏 0 赞 0 分享

最土团购功能修改技巧整理

最近使用了最土团购系统,感觉确实不错,功能也方便添加。下面整理一些技巧方便以后再修改。
收藏 0 赞 0 分享

最土团购短信订阅内容和短信发送内容修改方法

如何修改最土团购短信订阅内容和短信发送内容,有时候我们需要修改短信发送内容,那么就可以参考下面的方法
收藏 0 赞 0 分享

ASPCMS 2.2.0以上版本前台后台去powered by aspcms2 版权方法

ASPCMS 2.2.0以上版本前台后台去powered by aspcms2 版权方法,并不是在模板中处理的
收藏 0 赞 0 分享
查看更多