投稿 评论 顶部
 手机版 | 登陆 | 注册 | 留言 | 设首页 | 加收藏

discuz x3.2 提取帖子第一张图片生成缩略图代码

佚名 discuz教程
在已获得帖子图片附件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。
<?phprequire_once './source/class/class_core.php';$discuz = & discuz_core::instance();$discuz->init();list($w,$h)=explode("x",$_G['gp_size']);$m=0;if($w==0&&$h==0){        $m=5;}elseif ($h==0){        $m=3;}elseif ($w==0){        $m=4;}/*$w=100;//宽度$h=75;//高度$m=0;//缩略图模式        //mode=0为固定宽高,画质裁切不变形        //mode=1为固定宽高,画质会拉伸变形        //mode=2为可变宽高,宽高不超过指定大小        //mode=3为固定宽度,高度随比例变化*/$nopic='./static/image/common/nophotosmall.gif';//缺省图片$aid=intval($_G['gp_aid']);$dir="data/aidpic/";$subdir=$dir."/{$w}x{$h}x{$m}/";$thumbfile=$subdir."/".$aid.".jpg";if(file_exists($thumbfile)){        header("location:{$thumbfile}");        die();}$tableid=substr($aid,-1,1);$attach=DB::fetch_first("SELECT a.tid,a.attachment,a.remoteFROM ".DB::table("forum_attachment_{$tableid}")." aWHERE a.`tid` ='$aid'AND a.`isimage`<>0order by a.aid asclimit 0,1");if($attach){        $attachurl=$attach['remote']?$_G['setting']['ftp']['attachurl']:$_G['setting']['attachurl'];        $attachfile=$attachurl."/forum/".$attach['attachment'];        if(!is_dir($dir)) @mkdir($dir);        if(!is_dir($subdir)) @mkdir($subdir);        dzthumb($attachfile,$thumbfile,$w,$h,$m);        header("location:{$thumbfile}");        die();}else{        header("location:$nopic");        die();}function dzthumb($srcfile,$dstfile,$dstw,$dsth=0,$mode=0,$data=''){        $data=$data==''?@GetImageSize($srcfile):$data;        if(!$data) return false;        if($data[2]==2) $im=@ImageCreateFromJPEG($srcfile);        elseif ($data[2]==1) $im=@ImageCreateFromGIF($srcfile);        elseif($data[2]==3) $im=@ImageCreateFromPNG($srcfile);        list($img_w, $img_h) = $data;        if($dsth==0) $mode=3;        if($mode==0){                $imgratio = $img_w / $img_h;                $thumbratio = $dstw / $dsth;                if($imgratio >= 1 && $imgratio >= $thumbratio || $imgratio < 1 && $imgratio > $thumbratio) {                        $cuty = $img_h;                        $cutx = $cuty * $thumbratio;                } elseif($imgratio >= 1 && $imgratio <= $thumbratio || $imgratio < 1 && $imgratio < $thumbratio) {                        $cutx = $img_w;                        $cuty = $cutx / $thumbratio;                }                $cx = $cutx;                $cy = $cuty;        }elseif($mode==1){                $cx = $img_w;                $cy = $img_h;        }elseif ($mode==2){                $cx = $img_w;                $cy = $img_h;                $bit=$img_w/$img_h;                if($dstw/$dsth>$bit){                        $dstw=($img_w/$img_h)*$dsth;                }else{                        $dsth=($img_h/$img_w)*$dstw;                }        }        elseif($mode==3){                $cx = $img_w;                $cy = $img_h;                $dsth=$dstw * $img_h / $img_w;        }        elseif ($mode==4){                $cx = $img_w;                $cy = $img_h;                $dstw=$dsth * $img_w / $img_h;        }        $ni=imagecreatetruecolor($dstw,$dsth);        ImageCopyResampled($ni,$im,0,0,0,0,$dstw,$dsth, $cx, $cy);        clearstatcache();        if($data[2]==2) ImageJPEG($ni,$dstfile,100);        elseif($data[2]==1) ImageGif($ni,$dstfile);        elseif($data[2]==3) ImagePNG($ni,$dstfile);        return true;}?>