12553查看/14回复/收藏

admin

2017-3-5 12:06:32

1#
在已获得帖子图片附件aid的情况下可以直接使用
<!--{eval $imagelistkey = getforumimg($thecover[aid], 0, 225, 0); }-->
这个是生成到data/attachment目录。

或者另一种,在只有帖子tid的情况下获得帖子缩略图,单独创建aidpic.php文件放到根目录,在使用时缩略图地址为aidpic.php?aid=帖子tid&宽x高,如<img src="aidpic.php?aid=24575&size=150x100"/>
生成到自动创建data/aidpic。
  1. <?php
  2. require_once './source/class/class_core.php';
  3. $discuz = & discuz_core::instance();
  4. $discuz->init();
  5. list($w,$h)=explode("x",$_G['gp_size']);
  6. $m=0;
  7. if($w==0&&$h==0){
  8.         $m=5;
  9. }elseif ($h==0){
  10.         $m=3;
  11. }elseif ($w==0){
  12.         $m=4;
  13. }
  14. /*
  15. $w=100;//宽度
  16. $h=75;//高度
  17. $m=0;//缩略图模式
  18.         //mode=0为固定宽高,画质裁切不变形
  19.         //mode=1为固定宽高,画质会拉伸变形
  20.         //mode=2为可变宽高,宽高不超过指定大小
  21.         //mode=3为固定宽度,高度随比例变化
  22. */

  23. $nopic='./static/image/common/nophotosmall.gif';//缺省图片

  24. $aid=intval($_G['gp_aid']);
  25. $dir="data/aidpic/";
  26. $subdir=$dir."/{$w}x{$h}x{$m}/";
  27. $thumbfile=$subdir."/".$aid.".jpg";
  28. if(file_exists($thumbfile)){
  29.         header("location:{$thumbfile}");
  30.         die();
  31. }
  32. $tableid=substr($aid,-1,1);
  33. $attach=DB::fetch_first("SELECT a.tid,a.attachment,a.remote
  34. FROM ".DB::table("forum_attachment_{$tableid}")." a
  35. WHERE a.`tid` ='$aid'
  36. AND a.`isimage`<>0
  37. order by a.aid asc
  38. limit 0,1");

  39. if($attach){
  40.         $attachurl=$attach['remote']?$_G['setting']['ftp']['attachurl']:$_G['setting']['attachurl'];
  41.         $attachfile=$attachurl."/forum/".$attach['attachment'];
  42.         if(!is_dir($dir)) @mkdir($dir);
  43.         if(!is_dir($subdir)) @mkdir($subdir);
  44.         dzthumb($attachfile,$thumbfile,$w,$h,$m);
  45.         header("location:{$thumbfile}");
  46.         die();
  47. }else{
  48.         header("location:$nopic");
  49.         die();
  50. }

  51. function dzthumb($srcfile,$dstfile,$dstw,$dsth=0,$mode=0,$data=''){
  52.         $data=$data==''?@GetImageSize($srcfile):$data;
  53.         if(!$data) return false;
  54.         if($data[2]==2) $im=@ImageCreateFromJPEG($srcfile);
  55.         elseif ($data[2]==1) $im=@ImageCreateFromGIF($srcfile);
  56.         elseif($data[2]==3) $im=@ImageCreateFromPNG($srcfile);
  57.         list($img_w, $img_h) = $data;
  58.         if($dsth==0) $mode=3;
  59.         if($mode==0){
  60.                 $imgratio = $img_w / $img_h;
  61.                 $thumbratio = $dstw / $dsth;
  62.                 if($imgratio >= 1 && $imgratio >= $thumbratio || $imgratio < 1 && $imgratio > $thumbratio) {
  63.                         $cuty = $img_h;
  64.                         $cutx = $cuty * $thumbratio;
  65.                 } elseif($imgratio >= 1 && $imgratio <= $thumbratio || $imgratio < 1 && $imgratio < $thumbratio) {
  66.                         $cutx = $img_w;
  67.                         $cuty = $cutx / $thumbratio;
  68.                 }
  69.                 $cx = $cutx;
  70.                 $cy = $cuty;
  71.         }elseif($mode==1){
  72.                 $cx = $img_w;
  73.                 $cy = $img_h;
  74.         }elseif ($mode==2){
  75.                 $cx = $img_w;
  76.                 $cy = $img_h;
  77.                 $bit=$img_w/$img_h;
  78.                 if($dstw/$dsth>$bit){
  79.                         $dstw=($img_w/$img_h)*$dsth;
  80.                 }else{
  81.                         $dsth=($img_h/$img_w)*$dstw;
  82.                 }
  83.         }
  84.         elseif($mode==3){
  85.                 $cx = $img_w;
  86.                 $cy = $img_h;
  87.                 $dsth=$dstw * $img_h / $img_w;
  88.         }
  89.         elseif ($mode==4){
  90.                 $cx = $img_w;
  91.                 $cy = $img_h;
  92.                 $dstw=$dsth * $img_w / $img_h;
  93.         }
  94.         $ni=imagecreatetruecolor($dstw,$dsth);
  95.         ImageCopyResampled($ni,$im,0,0,0,0,$dstw,$dsth, $cx, $cy);
  96.         clearstatcache();
  97.         if($data[2]==2) ImageJPEG($ni,$dstfile,100);
  98.         elseif($data[2]==1) ImageGif($ni,$dstfile);
  99.         elseif($data[2]==3) ImagePNG($ni,$dstfile);
  100.         return true;
  101. }

  102. ?>
复制代码
不能生成到远程。

14 回帖

何日君再来

2017-3-6 09:52:15

2#
我好像在一个叫网秀贴吧手机版的模板里面见过这个代码,那个模板里面还有一个vpic.php,可以生成视频的缩略图封面,可惜我下载的盗版,缺少vpic.php这个文件,不知老大有没有这个

admin

2017-3-6 12:58:10

3#
何日君再来 发表于 2017-3-6 09:52
我好像在一个叫网秀贴吧手机版的模板里面见过这个代码,那个模板里面还有一个vpic.php,可以生成视频的缩略 ...

直接用这个也可以啊,这里没有限制尺寸。
转载请注明出处。

何日君再来

2017-3-6 13:42:42

4#
本帖最后由 何日君再来 于 2017-3-6 13:45 编辑
admin 发表于 2017-3-6 12:58
直接用这个也可以啊,这里没有限制尺寸。

帖子里面的优酷视频这些也可以吗,我是说他那个vpic.php可以直接生成视频的缩略图,模板里面这样调用的
  1.                             <!--{loop $medialist $media}-->
  2.                                 {if preg_match('/v_(.*)\.swf/',$media,$reg)}
  3.                                     <li class="li_v"><a href="http://www.56.com/u8/v_{$reg[1]}.html"><em></em><img src="vpic.php?size=101x101&url={$media}" /></a></li>
  4.                                 {elseif preg_match('/sid\/(.*)\/v.swf/',$media,$reg)}
  5.                                     <li class="li_v"><a href="http://v.youku.com/v_show/id_{$reg[1]}.html"><em></em><img src="vpic.php?size=101x101&url={$media}" /></a></li>
  6.                                 {else}
  7.                                     <li class="li_v"><a href="{$media}"><em></em><img src="vpic.php?size=101x101&url={$media}" /></a></li>
  8.                                 {/if}
  9.                             <!--{/loop}-->
  10.                             <!--{loop $flashlist $flash}-->
  11.                                 {if preg_match('/v_(.*)\.swf/',$flash,$reg)}
  12.                                     <li class="li_v"><a href="http://www.56.com/u8/v_{$reg[1]}.html"><em></em><img src="vpic.php?size=101x101&url={$media}" /></a></li>
  13.                                 {elseif preg_match('/sid\/(.*)\/v.swf/',$flash,$reg)}
  14.                                     <li class="li_v"><a href="http://v.youku.com/v_show/id_{$reg[1]}.html"><em></em><img src="tpic.php?size=101x101&url=视频地址变量" /></a></li>
  15.                                 {/if}
  16.                             <!--{/loop}-->
复制代码

admin

2017-3-6 21:23:06

5#
何日君再来 发表于 2017-3-6 13:42
帖子里面的优酷视频这些也可以吗,我是说他那个vpic.php可以直接生成视频的缩略图,模板里面这样调用的

我这个不是。
看链接参数可知,我的这个是根据aid获取图片。
他这个参数变量是url=$media,至于这个$media是什么,不清楚。
如果你找到了顺便告诉我,谢谢。
转载请注明出处。

何日君再来

2017-3-7 08:48:49

6#
admin 发表于 2017-3-6 21:23
我这个不是。
看链接参数可知,我的这个是根据aid获取图片。
他这个参数变量是url=$media,至于这 ...

他这个变量是贴内的视频地址,我在这下载的http://www.adminbuy.cn/discuz/690.html

joker

2017-5-26 12:19:05

7#
我想在首页diy模块调用帖子里第一个图片该怎么弄呀 现在调用的感觉是随机的 并不能达到我想要的效果

admin

2017-5-26 12:51:26

8#
joker 发表于 2017-5-26 12:19
我想在首页diy模块调用帖子里第一个图片该怎么弄呀 现在调用的感觉是随机的 并不能达到我想要的效果

好久不用diy了,diy图片应该是封面,如果你的帖子里的某张图片设为封面,diy里可以显示它。
转载请注明出处。

bbskgm

2017-6-11 09:12:19

9#
用第一种方法遇到个问题,生成的缩略图,如果帖子图片修改了,缩略图还是原来的,想要同时更改缩略图,要如何解决呢

admin

2017-6-11 10:44:22

10#
bbskgm 发表于 2017-6-11 09:12
用第一种方法遇到个问题,生成的缩略图,如果帖子图片修改了,缩略图还是原来的,想要同时更改缩略图,要如 ...

换图的时候要点删除,删掉原图。
转载请注明出处。
12下一页
您需要登录后才可以回帖 登录 | 注册
高级模式