咨询热线:18076568990、0755-25823180

ShoWT 商城系统开发经验分享 第七篇 图片处理

1624 2 Sunboy1215 发表于 2015-1-16 13:53:04
本篇主要介绍商城对图片上传、裁切处理和远程商品图片的设置。
首先实例化上传类
$upload = new UploadFile();
然后设置上传商品图片上传目录
$upload->set('default_dir',ATTACH_GOODS.DS.$upload->getSysSetPath());
设置上传图片宽高最大尺寸,多出部分将被按比例裁切
$upload->set('max_size',C('image_max_filesize'));
跟据业务需要,系统将图片裁剪为4张缩略图,4张图的最大宽度设置从配置文件中取得
$thumb_width          =sprintf('%s,%s,%s,%s',C('thumb_tiny_width'),C('thumb_small_width'),C('thumb_mid_width'),C('thumb_max_width'));
设置最大高度
$thumb_height        =sprintf('%s,%s,%s,%s',C('thumb_tiny_height'),C('thumb_small_height'),C('thumb_mid_height'),C('thumb_max_height'));
$upload->set('thumb_width', $thumb_width);
$upload->set('thumb_height',$thumb_height);
设置4张图片的名称后缀
$upload->set('thumb_ext',      '_tiny,_small,_mid,_max');
系统还支持设置文件名称前缀
$upload->set('fprefix',$store_id);
系统允许上传哪些类型的图片
$upload->set('allow_type',array('gif','jpg','jpeg','png'));
调用upfile方法开始上传操作
$result = $upload->upfile($_POST['product_thumb']);
如果上传错误,输出json格式的错误信息
if (!$result){
         如果系统是GBK格式,则转成utf-8编码,再输出json信息
         if(strtoupper(CHARSET) == 'GBK'){
                   $error= Language::getUTF8($upload->error);
         }
         $output= json_encode(array('error'=>$error));
         输出json信息,(商品图片上传是异步上传)
         exit($output);
}
如果上传无误,返回图片新路径

$img_path =$upload->getSysSetPath().$upload->file_name;

以上是商品图片上传处理的主要代码(裁剪由uploadfile类内部完成),得到商品图片新路径后,保存入库即可。保存到商品表的商品图片只是缩略图一种尺寸,商城使用封装的图片调用函数来满足不同页面对不同尺寸图片的要求,这些函数位于framework/function/goods.php中,分别为thumb ,cthumb,gthumb,这些函数的具体使用可查看官方手册。

系统支持多种图片存储方式配置,打开商城根目录下的config.ini.php,找到$config['thumb']['save_type']项,默认为$config['thumb']['save_type'] = 1;表示本地存储,使用商城域名访问。$config['thumb']['save_type']= 2;表示图片存储目录不变,但支持使用图片域名指向存储目录,如pic.shopwt.com指向upload目录(也适用于CDN加速的情况)。

$config['thumb']['save_type']= 3;表示调用远程图片的URL。系统自带FTP功能,可以使用FTP上传到远程图片服务器,当然也可以不开启FTP,自行配置图片同步分发。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 今日
    0
  • 主题
    1507

推荐贴子

联系我们

产品及方案咨询:18076568990、0755-25823180

电子邮箱:web@shopwt.com、客服微信:shopwtcom

公司地址:深圳市罗湖区人民南路3002号国贸大厦B座1608楼

  • 官方公众号

  • 微信客服