zoukankan      html  css  js  c++  java
  • joomla

    最近比较忙,没有时间写一些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数据库.有相同兴趣的朋友可以@我.

        老规矩,附上源码部分,仅供参考,不能使用:下载我https://files.cnblogs.com/logoove/com_templateshow.rar

      (本文原创 by Yoby)

     
    分类: joomla
  • 相关阅读:
    thinkphp5 tp5 命名空间 报错 Namespace declaration statement has to be the very first statement in the script
    开启 php 错误 提示 php-fpm 重启 nginx 500错误 解决办法 wdlinux lnmp 一键包 php脚本无法解析执行
    js 设置 cookie 定时 弹出层 提示层 下次访问 不再显示 弹窗 getCookie setCookie setTimeout
    php 二维数组 转字符串 implode 方便 mysql in 查询
    nginx 重启 ps -ef|grep nginx kill -HUP 主进程号
    jquery bootstrap help-block input 表单 提示 帮助 信息
    jquery 倒计时 60秒 短信 验证码 js ajax 获取
    jQuery如何获取同一个类标签的所有的值 遍历
    linux下C语言文件操作相关函数
    gcc,gdb用法
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2525715.html
Copyright © 2011-2022 走看看