以前曾收录过这篇文章[DedeCms生成漂亮整齐的缩略图],我做了下尝试,生成缩略图的时候还是会有问题。今天看到这个文章,做个补充。
勾选 “提取第一张图片为缩略图” 实际是将第一张图当作缩略图 并没有生成带"_lit"的小图
修改文件:DEDEctionrticle_add_action.php
先看原代码
代码如下:
//自动获取缩略图 if($autolitpic==1 && $litpic==''){ $litpic = GeTDDImgFromBody($body); }登录后复制
也就是上面说的实际是第一张原图 这就是问题所在
参考了4.X里提取缩略图代码,更改为:
代码如下:
//自动获取缩略图-改 if($autolitpic==1 && $litpic==''){ $cfg_medias_dir = str_replace('/','/',$cfg_medias_dir); $picname = PReg_replace("/.+?".$cfg_medias_dir."(.*)( |"|').*$/isU",$cfg_medias_dir."$1",$body); if(eregi(".(jpg|gif|PNG)$",$picname)){ if(ereg("_lit.",$picname)) $litpic = $picname; else $litpic = GetDDImage('ddfirst',$picname,0); } }登录后复制
同理dedectionrticle_eidt_action.PHP更改为:
代码如下:
//自动获取缩略图-改 if($autolitpic==1 && empty($litpic)){ $cfg_medias_dir = str_replace('/','/',$cfg_medias_dir); $picname = preg_replace("/.+?".$cfg_medias_dir."(.*)( |"|').*$/isU",$cfg_medias_dir."$1",$body); if(eregi(".(jpg|gif|png)$",$picname)){ if(ereg("_lit.",$picname)) $litpic = $picname; else $litpic = GetDDImage('ddfirst',$picname,0); } }登录后复制
然后将这两个文件 复制覆盖到Dede下。
OK!这样就能打到勾选“提取第一张...”生成缩略图的目的了。
缩略图变形 参考[dedeCMS生成漂亮整齐的缩略图]
需修改文件:includeinc_photograph.php
找到:($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); 共三处。
改为:($ni,$im,0,0,$src_X,$src_Y,$ftoW,$ftoH,$srcW,$srcH);
修改了缩图函数,就能在原图中截取居中的、最大面积的符合自定义缩略图长宽比列的一部分生成缩略图。