thinkphp3.2.x版本中图片上传缩略图的解决方案
调用方式很简单 get_sc($cover_id,[$width=180,$height=auto,$cut])
@param $cover_id 图片ID___
@param $width 宽度___
@param $height 高___
@param $cut 是否切割 默认不切割___
直接返回新图片的url
可以替换get_cover($cover_id,'path');
get_cover里做了简单的默认图片判断,大家可以自己改一下。
/**
* 获取缩略图
* @param unknown_type $filename 原图路劲、url
* @param unknown_type $width 宽度
* @param unknown_type $height 高
* @param unknown_type $cut 是否切割 默认不切割
* @return string
*/
function getThumbImage($filename, $width = 100, $height = 'auto',$cut=false, $replace = false)
{
define('UPLOAD_URL', '');
define('UPLOAD_PATH', '');
$filename = str_ireplace(UPLOAD_URL, '', $filename); //将URL转化为本地地址
$info = pathinfo($filename);
$oldFile = $info['dirname'] . DIRECTORY_SEPARATOR . $info['filename'] . '.' . $info['extension'];
$thumbFile = $info['dirname'] . DIRECTORY_SEPARATOR . $info['filename'] . '_' . $width . '_' . $height . '.' . $info['extension']; $oldFile = str_replace('\\', '/', $oldFile);
$thumbFile = str_replace('\\', '/', $thumbFile); $filename = ltrim($filename, '/');
$oldFile = ltrim($oldFile, '/');
$thumbFile = ltrim($thumbFile, '/');
//原图不存在直接返回
if (!file_exists(UPLOAD_PATH . $oldFile)) {
@unlink(UPLOAD_PATH . $thumbFile);
$info['src'] = $oldFile;
$info['width'] = intval($width);
$info['height'] = intval($height);
return $info;
//缩图已存在并且 replace替换为false
} elseif (file_exists(UPLOAD_PATH . $thumbFile) && !$replace) {
$imageinfo = getimagesize(UPLOAD_PATH . $thumbFile);
//dump($imageinfo);exit;
$info['src'] = $thumbFile;
$info['width'] = intval($imageinfo[0]);
$info['height'] = intval($imageinfo[1]);
return $info;
//执行缩图操作
} else {
$oldimageinfo = getimagesize(UPLOAD_PATH . $oldFile);
$old_image_width = intval($oldimageinfo[0]);
$old_image_height = intval($oldimageinfo[1]);
if ($old_image_width <= $width && $old_image_height <= $height) {
@unlink(UPLOAD_PATH . $thumbFile);
@copy(UPLOAD_PATH . $oldFile, UPLOAD_PATH . $thumbFile);
$info['src'] = $thumbFile;
$info['width'] = $old_image_width;
$info['height'] = $old_image_height;
return $info;
} else {
//生成缩略图
// tsload( ADDON_PATH.'/library/Image.class.php' );
// if($cut){
// Image::cut(UPLOAD_PATH.$filename, UPLOAD_PATH.$thumbFile, $width, $height);
// }else{
// Image::thumb(UPLOAD_PATH.$filename, UPLOAD_PATH.$thumbFile, '', $width, $height);
// }
//生成缩略图 - 更好的方法
if ($height == "auto") $height = 0;
//import('phpthumb.PhpThumbFactory');
require_once('ThinkPHP\Library\Vendor\phpthumb\PhpThumbFactory.class.php'); $thumb = PhpThumbFactory::create(UPLOAD_PATH . $filename);
//dump($thumb);exit;
if ($cut) {
$thumb->adaptiveResize($width, $height);
} else {
$thumb->resize($width, $height);
} $res = $thumb->save(UPLOAD_PATH . $thumbFile); //缩图失败
if (!$res) {
$thumbFile = $oldFile;
}
$info['width'] = $width;
$info['height'] = $height;
$info['src'] = $thumbFile; return $info;
}
}
} function get_sc($cover_id, $width = 100, $height = 'auto', $cut = false, $replace = false)
{ $picture = M('Picture')->where(array('status' => 1))->getById($cover_id); if(empty($picture))
{
return 'Public/static/assets/img/nopic.png';
}
$attach = getThumbImage($picture['path'], $width, $height, $cut, $replace); return $attach['src'];
}
调用的第三方类库,请到这里类库下载
版权声明:本文为博主原创文章,未经博主允许不得转载。
thinkphp3.2.x版本中图片上传缩略图的解决方案的更多相关文章
- javascript 图片上传缩略图预览
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...
- jsp中简易版本的图片上传程序
1.下载相应的组件的最新版本 Commons FileUpload 可以在http://jakarta.apache.org/commons/fileupload/下载 附加的Commons IO ...
- ueditor编辑器插件 chrome中图片上传框延时问题
最近在项目中使用ueditor插件进行文字的在线编辑功能时,发现这个插件的图片上传弹框在chrome浏览器延迟非常的厉害.经过多方搜索,终于解决.现将解决方案记录如下: 1.修改/Ueditor/di ...
- 微信小程序中图片上传阿里云Oss
本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...
- js中图片上传,多次上传同一张不生效
在做图片上传的功能时, 使用删除功能删除了一张图片, 然后想重新上传原来删除的图片, 结果预览不显示, 也不能上传成功 解决办法, 在删除方法里置空input $("#id").f ...
- VS2019 开发Django(六)------Admin中图片上传
导航:VS2019开发Django系列 该篇继续完善在Django的管理界面上传图片,因为LazyOrders小程序中菜单需要展示图片,而不是一个文本路径,所以我们还需要继续改造一下. 1)安装pil ...
- drupal form 中图片上传
1.创建url 链接到form $items['qianfeng/add'] = array( 'title' => t('加入信息'), 'page callback' =&g ...
- 微信支付v3版本NET 图片上传API
最近在写特约服务商进件的由于微信官方没有DEMO,导致踩了很多坑,特把自己经验分享给大家. 注意几点: 1.上传图片签名不是把所有body内容都进行签名,只需签名计算的请求主体为meta的json串: ...
- HiShop2.x版本中的上传插件分析,得出所用的模板语言为Underscore.js 1.6.0且自己已修改
效果: 上传组件非常的酷,但是分析其使用JS写法使用了模板语言的,代码如下: <script type="text/j-template" id="tpl_popb ...
随机推荐
- VS(Microsoft Visual Studio2010)工具打开项目所需的应用程序,出现未安装(.csproj)的应用程序的解决办法
打开这个文件的话,从列表中选择打开方式的时候,看看选择打开项目文件的打开方式是不是visual studio,如果是Micrisoft visual studio version selector.那 ...
- IIS支持net.tcp
绑定 高级设置 http和net.tcp用逗号分隔 //擦擦擦,见鬼了,下面的是tcp.net导致我找了好久,都找不出这个错误 //一定要注意,不要写错了. 否则会收到提示:找不到具有绑定 NetT ...
- BZOJ_4196_[NOI2015]_软件包管理器_(树链剖分)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=4196 给出一棵树,树上点权为0或1.u权值为1的条件是从根节点到u路径上的所有点权值都为1.u ...
- 搜索(另类状态BFS):NOIP 华容道
描述 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面,华容道是否根本就无法完成,如果能完成,最少需要多少时间. 小 B 玩的华容道与经典的 ...
- 动态规划(计数DP):HDU 5136 Yue Fei's Battle
Yue Fei's Battle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Other ...
- How to make project not set to be build
1.BUILD->Configuration Management... 2. When you guys add new projects to the kiosk solution plea ...
- 搭建Git远程仓库(也就是Git服务器,不用再连Github了)
github上一般托管的代码都是公开的,任何人都可以查看.复制下载等,而私有的项目则需要付费.所以可以自己搭建一个git服务,自己人用. 首先安装git: sudo apt-get install g ...
- Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 177 Solved: 128[Submit][Status ...
- 完美转换MySQL的字符集 Mysql 数据的导入导出,Mysql 4.1导入到4.0
MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql的字符集进行一下转换,MySQL版本的升级.降级,特别是 ...
- STM32 IAP 在线更新程序 为什么有时行 有时又不行 感觉不可靠 问题解决
搞了一天才发现 在MDK设置选项中有个"linker"选项卡 , 需要在Project->Options->Linker中将Use Memory Layout from ...