在已获得帖子图片附件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。
- <?php
- require_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.remote
- FROM ".DB::table("forum_attachment_{$tableid}")." a
- WHERE a.`tid` ='$aid'
- AND a.`isimage`<>0
- order by a.aid asc
- limit 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;
- }
- ?>
点击复制这段代码
|