加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

织梦dedecms5.7不能自动提取首张图片为缩略图最有用的解决

发布时间:2022-06-28 10:35:18 所属栏目:教程 来源:互联网
导读:织梦dedecms5.7不能自动提取第一张图片为缩略图 最有效的解决方法 各种改法,各种尝试,后来其实只要改一句代码就可以了;可能是因为服务器上禁用了fsockopen() 函数造成的,在用fsockopen()的地方用 stream_socket_client()代替就可以了。 具体修改地方是 /
  织梦dedecms5.7不能自动提取第一张图片为缩略图 最有效的解决方法
 
  各种改法,各种尝试,后来其实只要改一句代码就可以了;可能是因为服务器上禁用了fsockopen() 函数造成的,在用fsockopen()的地方用 stream_socket_client()代替就可以了。
 
  具体修改地方是 /include/dedehttpdown.class.php 第507行;$this->m_fp = @fsockopen($this->m_host, $this->m_port, $errno, $errstr,10);
 
  替换为:$this->m_fp = @stream_socket_client($this->m_host . ‘:’ . $this->m_port, $errno, $errstr,10);
 
  后来发现可能还有点问题;如果大家做了上面的操作还不行 可以参考下面
 
  在dede/inc/inc_archives_functions.php的第505行
 
  if($GLOBALS[‘cfg_ddimg_full’]==‘Y’) @ImageResizeNew($oldpic,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir.$litpic);
  else @ImageResize($oldpic,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir.$litpic);
     if(!is_file($cfg_basedir.$litpic)) $litpic = ”;
  这里调用了@ImageResize函数对图片进行缩小,并将缩小的图片另存为$litpic。但实际上ImageResize函数会再对图片缩小 的尺寸进行判断,如果原图已经小于目标尺寸,则不进行缩放直接返回。

      导致并未进行另存为$litpic的操作。如此一来$litpic的文件并未生成,根 据上述代码的最后一行,自然就返回空值。
 
  因此,解决办法有二:
 
  一是在系统基本参数-附件设置中将缩略图的宽度跟高度都设为一个较小的值,以确保大部分的图片都会进行缩小。
 
  二是把上述最后一行改为if(!is_file($cfg_basedir.$litpic)) $litpic = $oldpic;
 
  意思就是如果不存在缩略图文件,则返回原图作为缩略图。
 
  基本就可以解决问题了。
 
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读