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 ...
随机推荐
- 安卓高手之路之java层Binder
很多人一提到Binder就说代理模式,人云亦云的多,能理解精髓的少. 本篇文章就从设计角度分析一下java层BInder的设计目标,以及设计思路,设计缺陷,从而驾驭它. 对于[邦德儿]的理解, 从通信 ...
- C#获取文件的当前路径
C#获取文件的当前路径 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -获取模块的完整路径. 2.Syst ...
- VS2010引用项目dll,编译时报错
截图出处:http://www.cnblogs.com/wuhuisheng/archive/2012/02/13/2349754.html
- Ubuntu配置Android编译环境
1.Ubuntu安装 VMware安装ubuntu之后,安装Vmware tools: 1.安装完ubuntu后,VMware Workstation菜单:虚拟机-->安装 Vmware Too ...
- ARM学习笔记15——串口通信基本原理【转】
计算机串口基本理论 1.什么是串口? 2,什么是RS-232? 3,什么是RS-422? 4,什么是RS-485? 5,什么是握手? 1,什么是串口? 串口是计算机上一种非常通用的设备通信的协议(不要 ...
- wand(weak and)算法基本思路
一般搜索的query比较短,但如果query比较长,如是一段文本,需要搜索相似的文本,这时候一般就需要wand算法,该算法在广告系统中有比较成熟的应该,主要是adsense场景,需要搜索一个页面内容的 ...
- Android基于XMPP Smack Openfire下学习开发IM(六)总结
不管学习什么都应该总结 这里我把关于Xmpp的一些方法整理到一个工具类中了 我就分享给大家 XmppConnection.java package com.techrare.utils; import ...
- 8-7-Exercise
链接:第二次小练 这次是我们这组出的题目~我出了一道......B-Prison rearrangement,感觉有点复杂~不过其实题目想通了还是很简单的...... @荆红浅醉出的是A.C.D,@从 ...
- 微信开发 提示 Redirect_uri参数错误解决方法
出现这个问题有多种原因: 1.没有配置网页授权 我们可以根据微信的开发者文档http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d ...
- final、抽象类、接口、多态、
final———最终.作为一个修饰符 可以修饰类. 函数. 变量: 被final修饰的类不可以被继承: 被final修饰的方法不可以被重写: 被final修饰的变量只能够被赋值一次,既可以修饰成 ...