php 生成缩略图片,PHP生成缩略图片的有关问题

PHP code__construct($targetfile, $cfg_thumb, $cfg_watermarktext, $photo_waterpos, $photo_diaphaneity, $photo_wheight, $photo_wwidth, $cfg_watermarktype, $photo_marktrans,$trueMarkimg, $attach);

}

// 析构函数

function __construct($targetfile, $cfg_thumb, $cfg_watermarktext, $photo_waterpos, $photo_diaphaneity, $photo_wheight, $photo_wwidth, $cfg_watermarktype, $photo_marktrans,$trueMarkimg, $attach = array())

{

$this->thumbstatus = $cfg_thumb;

$this->watermarktext = $cfg_watermarktext;

$this->watermarkstatus = $photo_waterpos;

$this->watermarkquality = $photo_marktrans;

$this->watermarkminwidth = $photo_wwidth;

$this->watermarkminheight = $photo_wheight;

$this->watermarktype = $cfg_watermarktype;

$this->watermarktrans = $photo_diaphaneity;

$this->animatedgif = 0;

$this->targetfile = $targetfile;

$this->attachinfo = @getimagesize($targetfile);

$this->attach = $attach;

switch($this->attachinfo['mime'])

{

case 'image/jpeg':

$this->imagecreatefromfunc = function_exists('imagecreatefromjpeg') ? 'imagecreatefromjpeg' : '';

$this->imagefunc = function_exists('imagejpeg') ? 'imagejpeg' : '';

break;

case 'image/gif':

$this->imagecreatefromfunc = function_exists('imagecreatefromgif') ? 'imagecreatefromgif' : '';

$this->imagefunc = function_exists('imagegif') ? 'imagegif' : '';

break;

case 'image/png':

$this->imagecreatefromfunc = function_exists('imagecreatefrompng') ? 'imagecreatefrompng' : '';

$this->imagefunc = function_exists('imagepng') ? 'imagepng' : '';

break;

}//为空则匹配类型的函数不存在

$this->attach['size'] = empty($this->attach['size']) ? @filesize($targetfile) : $this->attach['size'];

if($this->attachinfo['mime'] == 'image/gif')

{

$fp = fopen($targetfile, 'rb');

$targetfilecontent = fread($fp, $this->attach['size']);

fclose($fp);

$this->animatedgif = strpos($targetfilecontent, 'NETSCAPE2.0') === false ? 0 : 1;

}

}

/**

* 生成缩略图

*

* @access public

* @param int $thumbwidth 图片宽度

* @param int $thumbheight 图片高度

* @param int $preview 是否预览

* @return void

*/

function thumb($thumbwidth, $thumbheight, $preview = 0)

{

$this->thumb_gd($thumbwidth, $thumbheight, $preview);

if($this->thumbstatus == 2 && $this->watermarkstatus)

{

$this->image($this->targetfile, $this->attach);

$this->attach['size'] = filesize($this->targetfile);

}

}

/**

* 使用gd生成缩略图

*

* @access public

* @param int $thumbwidth 图片宽度

* @param int $thumbheight 图片高度

* @param int $preview 是否预览

* @return void

*/

function thumb_gd($thumbwidth, $thumbheight, $preview = 0)

{

if($this->thumbstatus && function_exists('imagecreatetruecolor') && function_exists('imagecopyresampled') && function_exists('imagejpeg'))

{

$imagecreatefromfunc = $this->imagecreatefromfunc;

$imagefunc = $this->thumbstatus == 1 ? 'imagejpeg' : $this->imagefunc;

list($imagewidth, $imageheight) = $this->attachinfo;

if(!$this->animatedgif && ($imagewidth >= $thumbwidth || $imageheight >= $thumbheight))

{

$attach_photo = $imagecreatefromfunc($this->targetfile);

$x_ratio = $thumbwidth / $imagewidth;

$y_ratio = $thumbheight / $imageheight;

if(($x_ratio * $imageheight) < $thumbheight)

{

$thumb['height'] = ceil($x_ratio * $imageheight);

$thumb['width'] = $thumbwidth;

}

else

{

$thumb['width'] = ceil($y_ratio * $imagewidth);

$thumb['height'] = $thumbheight;

}

$targetfile = !$preview ? ($this->thumbstatus == 1 ? $this->targetfile.'.thumb.jpg' : $this->targetfile) : './watermark_tmp.jpg';

$thumb_photo = imagecreatetruecolor($thumb['width'], $thumb['height']);

imagecopyresampled($thumb_photo, $attach_photo, 0, 0, 0, 0, $thumb['width'], $thumb['height'], $imagewidth, $imageheight);

if($this->attachinfo['mime'] == 'image/jpeg')

{

$imagefunc($thumb_photo, $targetfile, 100);

}

else

{

$imagefunc($thumb_photo, $targetfile);

}

$this->attach['thumb'] = $this->thumbstatus == 1 ? 1 : 0;

}

}

}

}//End Class 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值