快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

利用GD库生成高质量缩略图

<?
/***************************************/
/*功 能:利用PHP的GD库生成高质量的缩略图*/
/*运行环境:PHP5.01/GD2*/
/*类说明:可以选择是/否裁图。

假如裁图则生成的图的尺寸与您输入的相同。
原则:尽可能多保持原图完整

假如不裁图,则按照原图比例生成新图
原则:根据比例以输入的长或者宽为基准*/
/*参 数:$img:源图片地址
$wid:新图的宽度
$hei:新图的高度
$c:是否裁图,1为是,0为否*/

/***************************************/

class resizeimage
{
//图片类型
var $type;
//实际宽度
var $width;
//实际高度
var $height;
//改变后的宽度
var $resize_width;
//改变后的高度
var $resize_height;
//是否裁图
var $cut;
//源图象
var $srcimg;
//目标图象地址
var $dstimg;
//临????建的图象
var $im;

function resizeimage($img, $wid, $hei,$c)
{

$this->srcimg = $img;
$this->resize_width = $wid;
$this->resize_height = $hei;
$this->cut = $c;
//图片的类型
$this->type = substr(strrchr($this->srcimg,"."),1);
//初始化图象
$this->initi_img();
//目标图象地址
$this -> dst_img();
//--
$this->width = imagesx($this->im);
$this->height = imagesy($this->im);
//生成图象
$this->newimg();
ImageDestroy ($this->im);
}
function newimg()
{

//改变后的图象的比例
$resize_ratio = ($this->resize_width)/($this->resize_height);
//实际图象的比例
$ratio = ($this->width)/($this->height);
if(($this->cut)=="1")
//裁图
{
if($ratio>=$resize_ratio)
//高度优先
{
$newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height);
ImageJpeg ($newimg,$this->dstimg);
}
if($ratio<$resize_ratio)
//宽度优先
{
$newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, $this->resize_height, $this->width, (($this->width)/$resize_ratio));
ImageJpeg ($newimg,$this->dstimg);
}
}

else
//不裁图
{
if($ratio>=$resize_ratio)
{

$newimg = imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio);
imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, ($this->resize_width)/$ratio, $this->width, $this->height);
ImageJpeg ($newimg,$this->dstimg);
}
if($ratio<$resize_ratio)
{

$newimg = imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height);
imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, ($this->resize_height)*$ratio, $this->resize_height, $this->width, $this->height);
ImageJpeg ($newimg,$this->dstimg);
}
}
}

//初始化图象
function initi_img()
{

if($this->type=="jpg")
{

$this->im = imagecreatefromjpeg($this->srcimg);
}
if($this->type=="gif")
{

$this->im = imagecreatefromgif($this->srcimg);
}
if($this->type=="png")
{

$this->im = imagecreatefrompng($this->srcimg);
}
}

//图象目标地址
function dst_img()
{

$full_length = strlen($this->srcimg);
$type_length = strlen($this->type);
$name_length = $full_length-$type_length;
$name = substr($this->srcimg,0,$name_length-1);
$this->dstimg = $name."_small.".$this->type;
}
}

?>
使用方式:


<?
require "resizeimage.php";
$resizeimage = new resizeimage("test.jpg", "200", "200", "0");
?>
<table width="200" height="200" cellspacing="0" cellpadding="0" border="0">
<tr>
<td bgcolor="#000000" align="center" valign="middle">
<a href="test.jpg" target="_blank"><img src="test_small.jpg" border="0"></a><td>
</tr>
</table>

返回类别: 教程
上一教程: 关于如何提高PHP速度的一些文章
下一教程: 自动生成静态页面

您可以阅读与"利用GD库生成高质量缩略图"相关的教程:
· 高质量缩略图的生成函数(多种剪切模式,按高度宽度最佳缩放等)
· 关于生成缩略图的问题,各位大侠请进来
· 不用GD库生成当前时间的PNG格式图象的程序
· 不用GD库生成当前时间的PNG格式图象的程序
· 不用GD库生成当前时间的PNG格式图象的程序
    微笑服务 优质保证 索取样品