找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1104|回复: 0

[分享] 织梦dedecms5.7不能自动提取第一张图片为缩略图 最有效的解决方

[复制链接]
发表于 2018-7-16 08:46:58 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
网上好像很多人都有这样的问题,刚刚开始可以,后来就不行了



百度了好几页
各种改法,各种尝试,后来其实只要改一句代码就可以了
可能是因为服务器上禁用了fsockopen() 函数造成的,在用fsockopen()的地方用 stream_socket_client()代替就可以了。
具体修改地方是 /include/dedehttpdown.class.php 第507行
  1. $this->m_fp = @fsockopen($this->m_host, $this->m_port, $errno, $errstr,10);
复制代码

替换为
  1. $this->m_fp = @stream_socket_client($this->m_host . ‘:’ . $this->m_port, $errno, $errstr,10);
复制代码


后来发现可能还有点问题
如果大家做了上面的操作还不行 可以参考下面

在dede/inc/inc_archives_functions.php的第505行
  1. if($GLOBALS[‘cfg_ddimg_full’]==‘Y’) @ImageResizeNew($oldpic,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir.$litpic);
  2. else @ImageResize($oldpic,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir.$litpic);
  3.    if(!is_file($cfg_basedir.$litpic)) $litpic = ”;
复制代码


这里调用了@ImageResize函数对图片进行缩小,并将缩小的图片另存为$litpic。但实际上ImageResize函数会再对图片缩小 的尺寸进行判断,如果原图已经小于目标尺寸,则不进行缩放直接返回。导致并未进行另存为$litpic的操作。如此一来$litpic的文件并未生成,根 据上述代码的最后一行,自然就返回空值。
因此,解决办法有二:
一是在系统基本参数-附件设置中将缩略图的宽度跟高度都设为一个较小的值,以确保大部分的图片都会进行缩小。
二是把上述最后一行改为
   
  1. if(!is_file($cfg_basedir.$litpic)) $litpic = $oldpic;
复制代码


意思就是如果不存在缩略图文件,则返回原图作为缩略图。

基本就可以解决问题了

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-1-10 00:11 , Processed in 0.039853 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表