调用方式很简单 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版本中图片上传缩略图的解决方案的更多相关文章

  1. javascript 图片上传缩略图预览

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  2. jsp中简易版本的图片上传程序

    1.下载相应的组件的最新版本 Commons FileUpload 可以在http://jakarta.apache.org/commons/fileupload/下载 附加的Commons IO   ...

  3. ueditor编辑器插件 chrome中图片上传框延时问题

    最近在项目中使用ueditor插件进行文字的在线编辑功能时,发现这个插件的图片上传弹框在chrome浏览器延迟非常的厉害.经过多方搜索,终于解决.现将解决方案记录如下: 1.修改/Ueditor/di ...

  4. 微信小程序中图片上传阿里云Oss

    本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...

  5. js中图片上传,多次上传同一张不生效

    在做图片上传的功能时, 使用删除功能删除了一张图片, 然后想重新上传原来删除的图片, 结果预览不显示, 也不能上传成功 解决办法, 在删除方法里置空input $("#id").f ...

  6. VS2019 开发Django(六)------Admin中图片上传

    导航:VS2019开发Django系列 该篇继续完善在Django的管理界面上传图片,因为LazyOrders小程序中菜单需要展示图片,而不是一个文本路径,所以我们还需要继续改造一下. 1)安装pil ...

  7. drupal form 中图片上传

    1.创建url 链接到form $items['qianfeng/add'] = array(     'title' => t('加入信息'),     'page callback' =&g ...

  8. 微信支付v3版本NET 图片上传API

    最近在写特约服务商进件的由于微信官方没有DEMO,导致踩了很多坑,特把自己经验分享给大家. 注意几点: 1.上传图片签名不是把所有body内容都进行签名,只需签名计算的请求主体为meta的json串: ...

  9. HiShop2.x版本中的上传插件分析,得出所用的模板语言为Underscore.js 1.6.0且自己已修改

    效果: 上传组件非常的酷,但是分析其使用JS写法使用了模板语言的,代码如下: <script type="text/j-template" id="tpl_popb ...

随机推荐

  1. 【简译】jQuery对象的奥秘:基础介绍

    本文翻译自此文章 你有没有遇到过类似$(".cta").click(function(){})这样的JavaScript代码并且在想“$('#x')是什么”?如果这些对你想天书一样 ...

  2. oracle命中率模型计算

    命中率模型是在owi之前比较常用的一种诊断性能问题的方法,通过命中率的计算,发现系统中的一些设置是否合理,当命中率不高的时候,通过调整一些参数和设置,提高命中率,有效的提高系统的性能和吞吐量.但当系统 ...

  3. bzoj1822

    显然是二分+最大流判定但比较烦的是判断线段和圆及其内部是否有公共点我的判断方法是错的,但是数据弱目前只知道推公式分类讨论,如果有简单的方法求教 ; type node=record flow,po,n ...

  4. bzoj2242

    快速幂 扩展欧几里得 baby-step-giant-step 可以自行baidu 程序附部分注释 ; type link=^node;      node=record        re,wh:l ...

  5. 简单的单页c#生成静态页源码

    protected void BtGroup_ServerClick(object sender, EventArgs e)        {            //产业群首页           ...

  6. [ZOJ 3631] Watashi's BG

    Watashi's BG Time Limit: 3 Seconds      Memory Limit: 65536 KB Watashi is the couch of ZJU-ICPC Team ...

  7. Java序列化技术

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化? Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象 ...

  8. v8 javascript engine

    https://code.google.com/p/v8-wiki/wiki/BuildingWithGYP vs2013git v8 http://github.com/v8/v8-git-mirr ...

  9. IE浏览器下读取客户端上传的文件大小

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  10. C#的CLR组成和运转介绍

    原文 clr基本 CLR(Common Language Runtime)是一个可由多种编程语言使用的“运行时”.(例如:c#,c++/cli,vb,f#,ironpython,ironruby,il ...