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 ...
随机推荐
- app:layout_scrollFlags不起作用
http://stackoverflow.com/questions/31722798/enteralwayscollapsed-does-not-bring-back-the-toolbar-whe ...
- Oracle 单实例 2个service的问题
[oracle@PD admin]$ ps -ef | grep smon oracle 1917 1 0 Aug21 ? 00:33:51 ora_smon_podinndb oracle 2265 ...
- ProcessStartInfo.UseShellExecute 属性
获取或设置一个值,该值指示是否使用操作系统外壳程序启动进程. 命名空间:System.Diagnostics程序集:System(在 system.dll 中) 语法 C# C++ VB ...
- Super Phyllis(穷举+搜索)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2723 题意:给出一些字符串u,v,代表u-&g ...
- App架构经验总结(转)
原文链接: http://keeganlee.me/post/architecture/20160303 架构因人而异,不同的架构师大多会有不同的看法:架构也因项目而异,不同的项目需求不同,相应的架构 ...
- AppScan修复漏洞:启用不安全的HTTP方法
最近对于系统使用Appscan扫描出中危漏洞“启用不安全的HTTP方法,找了很多修复方法都不能达到效果. 漏洞截图: 漏洞描述: 危险级别 中危险 影响页面 整个WEB页面. 简短描述 管 ...
- windows下面配置jdk环境变量
在环境变量中添加如下: Path D:\Program Files\Java\jdk1.6.0_26\binJAVA_HOME D:\Program Files\Java\jdk1.6.0_26CLA ...
- Robot Framework+appium集成安装
appium(中文教程,源码)是一款开源跨平台测试自动化工具,用于测试原生.移动web和混合应用,支持 iOS, Android和FirefoxOS平台. appium集成以下框架驱动自动化测试: i ...
- [原]RobotFrameWork(十一)AutoItLibrary测试库在win7(64bit)下安装及简单使用
最近安装AutoItLibrary,发现在win7 x64下无法安装成功,后来经过定位,发现是3rdPartyTools\AutoIt目录下面AutoItX3.dll的问题.因为AutoItX3.dl ...
- HDOJ/HDU 2564 词组缩写(单词缩写)
Problem Description 定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写. 比如,C语言里常用的EOF就是end of file的缩写. Input 输入的第一行是一个整数T ...