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序列化与Hessian序列化的区别
Java序列化: Java序列化会把要序列化的对象类的元数据和业务数据全部序列化为字节流,而且是把整个继承关系上的东西全部序列化了.它序列化出来的字节流是对那个对象结构到内容的完全描述,包含所有的信息 ...
- pcDuino汉化方法
1,打开终端:2,在终端输入命令 sudo apt-get update 更新一下软件源3, 输入命令下载中文支持包 sudo apt-get install language-pack-gnome- ...
- java 判断字符串是否为乱码
import java.util.regex.Matcher; import java.util.regex.Pattern; public class MessyCodeCheck { public ...
- TCP三次握手和连接关闭过程详解
1.建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1. (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和S ...
- 机器学习-review-1 线性回归
发现隔一段时间,忘记了好多知识点,这里认为重要的知识点记录下来,作为笔记,方便以后回顾. From “李航- 统计学习方法” 统计学习方法的三要素: 模型,策略, 算法 对于线性回归 -------- ...
- In Java, what is the default location for newly created files?
If the current directory of the application. If e.g. you create a File by using new FileOutputStream ...
- nyoj 1100 WAJUEJI which home strong!
WAJUEJI which home strong! 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 在一个山沟里,姐弟俩同时考上了大学.但由于家里拮据,所以这并不是 ...
- 【Struts2+Spring3+Hibernate3】SSH框架整合实现CRUD_1.2
作者: hzboy192@192.com Blog: http://my.csdn.net/peng_hao1988 版本总览:http://blog.csdn.net/peng_hao1988/ar ...
- spring集成guava的event bus
Guava的event bus guava, https://github.com/google/guava 是一个非常有名的Java类库,提供了很多在日常开发中常用的集合.函数接口等.此外,guav ...
- SAP财务凭证冲销
爱思普信息咨询/SAP Partner网(SAP软件/ERP介绍/SAP All-in one介绍) 客户公司的同事有时经常会问到冲销的问题,可能大部份的用户对于财务的冲销功能都不是很理解,这里我们全 ...