共有两个等比例缩略图可供参考。

1。对于类文件,可以在实例化后使用。

两。对于自定义方法,它比较轻。

类文件

复制代码如下:resizeimage美元=新resizeimage(, / 肖恩.jpg

下面的类可以实例化,生成缩略图

其中源文件和缩略图,地址可以是相同的,200100代表宽度和高度,第四可选0张,1张。



复制代码代码如下:< PHP

类resizeimage {



图片类型

公共$类型;

实际宽度

公共宽度;

/实际高度

公共高度;

更改宽度后/

公共resize_width美元;

在高度改变之后/

公共resize_height美元;

是否削减计划

削减公共开支;

/源图像

公共srcimg美元;

目标地址的映像

公共dstimg美元;

创建临时映像

公共即时通讯;



功能resizeimage(IMG美元,美元美元美元呢,嘿嘿,C,dstpath美元){



美元--- > srcimg = $ IMG;

美元-> resize_width = $呢;

美元-> resize_height = $黑;

此$ =;



类型图片

美元->类型= strtolower(substr(strrchr(美元-> srcimg,,),1));

初始化图像

美元-> initi_img();

目标地址的映像

美元-> dst_img($ dstpath);

h

美元->宽度= imagesx(美元-> IM);

美元->高度= imagesy(美元-> IM);

生成图像

美元-> newimg();

销毁一图像(美元-> IM);

}



功能newimg(){



在比值/图像变化后

resize_ratio美元=(美元-> resize_width)/(美元-> resize_height);

实际图像的比例

$ =($ - >宽度)($ - >高度);



如果(($ - >)=1 )

剪切/映射

{

如果(美元比> = $ resize_ratio)

高优先级

{

newimg美元=新建一个真彩色图像(美元-> resize_width,美元-> resize_height);

imagecopyresampled(newimg美元,美元->通讯,0, 0, 0,0,resize_width美元->,

美元-> resize_height(($这->高度)* $ resize_ratio),

这个高度

);

imagejpeg(newimg美元,美元-> dstimg);

}

如果(美元比<< resize_ratio美元)

宽度优先

{

newimg美元=新建一个真彩色图像(美元-> resize_width,美元-> resize_height);

imagecopyresampled(newimg美元,美元->通讯,0, 0, 0,0,resize_width美元->,

这resize_height美元->美元->宽度,

(($这->宽度)/ resize_ratio美元)

);

imagejpeg(newimg美元,美元-> dstimg);

}

}

其他的

不要剪切/映射

{

如果(美元比> = $ resize_ratio)

{

newimg美元=新建一个真彩色图像(美元-> resize_width,

(美元-> resize_width) /价格比

);

imagecopyresampled(newimg美元,美元->通讯,0, 0, 0,0,resize_width美元->,

(美元-> resize_width)/美元美元->宽度比,

这个高度

);

imagejpeg(newimg美元,美元-> dstimg);

}

如果(美元比<< resize_ratio美元)

{

newimg美元=新建一个真彩色图像(($这-> resize_height)* $比,

这resize_height美元->

);

imagecopyresampled(newimg美元,美元->通讯,0, 0, 0,0,

(美元-> resize_height)* $比,

这resize_height美元->美元->宽度,

这个高度

);

imagejpeg(newimg美元,美元-> dstimg);

}

}

}



初始化图像

功能initi_img(){



如果($ > type =JPG )

{

美元->我= imagecreatefromjpeg(美元-> srcimg);

}

如果($ > type =gif)

{

美元->我= imagecreatefromgif(美元-> srcimg);

}

如果($ > type =PNG )

{

美元->我= imagecreatefrompng(美元-> srcimg);

}

}

图像/目标地址

功能dst_img($ dstpath){



full_length美元= strlen(美元-> srcimg);

type_length美元= strlen(美元->型);

name_length美元美元美元type_length full_length =;



$name = substr(美元-> srcimg,0,name_length-1美元);

美元-> dstimg = $ dstpath;



/ /回声美元-> dstimg;

}

}



>

定制的方法

复制代码代码如下所示:

拇指('shawn .jpg,'shawnsun .jpg,100100);

类似于参数属性的方法

复制代码代码如下所示:

< PHP



功能的拇指($文件名,保存美元美元美元,SEtW商店,塞思){

imginfo美元= getimagesize($文件名);

如果(!imginfo美元)返回false;



如果($ imginfo { 'mime} = =图像/ pjpegimginfo美元{ 'mime} = =图像/ JPEG| |){

thisphoto美元= imagecreatefromjpeg($文件名);

} elseif($ imginfo { 'mime} = =图像/ x-pngimginfo美元{ 'mime} = =图像/格式| |){

thisphoto美元= imagecreatefrompng($文件名);

} elseif($ imginfo { 'mime} = =图像/图片){

thisphoto美元= imagecreatefromgif($文件名);

}



宽度=美元美元imginfo { 0 };

高度=美元美元imginfo { 1 };

$衡=最大(宽度/美元美元美元美元的SEtW商店,高/塞思);

净重= intval美元(美元/美元宽量);

NH = intval美元(美元高/ $衡);

回声缩写大小:W $ NW,H $ ;



如果($ SEtW商店西北= = 1美元){ $ NW =美元的SEtW商店;}

如果($塞思- $ = 1){ $ $ =塞思;}

++更正1像素:W $ NW,H $ ;



填充宽度

如果(SEtW商店西北> 0美元美元){

美元美元的NH = NH((NH /美元美元NW)*($ SEtW商店至西北));

需要扩展。($ SEtW商店至西北)。

SEtW商店西北=美元美元;

}

填充高

如果($塞思$ NH 0){

$西北= $西北+(($西北元/美元)* *(塞思美元- NH));

回声*需要补充。($塞思- NH)。

美元=塞思;

}

净重= intval美元($ NW);

NH = intval美元($ NH);

+更正大小:W $ NW,h $ ;



PX =(美元美元美元SEtW商店西北) / 2;

$ =($塞思- NH) 2;

回声窗口大小:W $ SEtW商店,H $塞思;

回声+偏移量校正:x $,;



newphoto美元=新建一个真彩色图像($ SEtW商店,为塞思);

拷贝部分图像并调整大小(newphoto美元,thisphoto美元美元美元,PX,PY,0,0,NW美元,美元美元美元的NH,宽度,高度);

imagejpeg(newphoto美元美元,保存);

返回true;

}



>