注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

解决PHPThumb一个针对远程图片【https协议】的BUG  

2017-05-11 11:14:57|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
之前的文章提及过《PHPThumb简单使用实例》,这是一个很好用的PHP类库,可以将远程的图片来生成缩略图。但是,好用是好用,这个类库其实还是有一个大BUG,众所周知的原因,我们平常访问远程的图片是以http://开始,但是有时访问国外的图床却是以https://开始,象这种情况下,PHPThum就无法生成缩略图了【不但无法生成缩略图,而且会出错,页面显示空白】。
原因到底是什么呢?得先来查看一下源码【文件ThumbBase.inc.php】:
解决PHPThumb一个针对远程图片【https协议】的BUG - sinsunson - 天朝布衣田中码农参上
看到没有,这里只判断了以http://开始的图片文件,却没有判断https://开始的图片文件。所以必须要再加一个条件判断,比如将这行改成如下:

if (stristr($this->fileName, 'http://') !== false || stristr($this->fileName, 'https://') !== false)

这下才没有问题了,不出错了,缩略图能够成功生成。此外还有一种解决方案,即先将远程图片下载到本地进行处理。

<?php

/**
*$url远程服务器上图片路径 $filename保存到本地的文件名
*/
function grabImage($url,$filename="") {
if($url=="") return false;
if($filename=="") {
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg" && $ext!=".png")
return false;
$filename=md5($url).$ext;
}
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img);
$fp2=@fopen($filename, "a");
fwrite($fp2,$img);
fclose($fp2);
return $filename;
}
$url="https://www.593668.com/6r3yvnsb7/1542137901.jpg";
//先下载保存图片
$filename=grabImage($url);
//读取本地图片
$thumb = PhpThumbFactory::create($filename);
$thumb->resize(120, 120);
$thumb->save("thumb.jpg","JPG");
//删除生成的本地图片

unlink($filename);

?>

至于大家喜欢那种,就随便啦。
  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017