<?php #封装一个image类
class Image{
private static $info; #图片基本信息
private static $image; #内存中的图片
public function __construct($src){
#判断文件
if(!is_file($src)){
return false;
} #如果不是文件,直接返回
//获取图片信息
$info = getimagesize($src);
self::$info=array(
'width'=>$info[0],
'height'=>$info[1],
'type'=>image_type_to_extension($info[2],false),
'mime'=>$info['mime']
);
//获取图片信息
$type=self::$info['type'];
$fun ="imagecreatefrom{$type}";
self::$image = $fun($src);
}
/**
* @param int $width $height 应该在配置文件中声明使用,可取消参数
* @return 缩略图 图片资源
* 缩略图的形成与使用
*/
public function thumb($width ,$height){
//新建镇色彩图片
$image_thumb =imagecreatetruecolor($width ,$height);
#获取图片的宽高比
$src_m = self::$info['width'] / self::$info['height']; #源文件空格比
$dst_m = $width / $height; #缩略图宽高比
#源文件图片是 N:1 型的 宽不变, 改变高
if($src_m > $dst_m ){
$cha_width = $width;
$cha_height = ceil($width / $src_m) ;
}else{
#源文件图片是 1:N 型的 高不变,改变宽
$cha_width = floor($height * $src_m) ;
$cha_height = $height ;
}
#对缩略图的其实位置进行重置
$dst_x = ($width - $cha_width) /2 ;
$dst_y = ($height - $cha_height) /2 ;
imagecopyresampled($image_thumb ,self::$image , $dst_x , $dst_y ,0 , 0, $cha_width , $cha_height ,self::$info['width'],self::$info['height']);
#生成缩略图
self::$image =$image_thumb;
// #显示缩略图图片
// self::show(self::$image);
#保存缩略图
self::save(self::getNewName());
//销毁图片
imagedestroy($this->image_thumb);
#返回缩略图名字
return self::getNewName();
}
#水印的生成坐标
private static function setLocal($pos){
#对 pos 参数进行判断 , 指定相应的水印生成坐标
#水印图片在config 文件中记录 $conf['mark']
switch ($pos) {
case 1:
$x = 0;
$y = 0;
break ;
case 2:
default:
$x = self::$info['width']-50;
$y = self::$info['height']-50; #不该是20 这个定制, 应该改成水印图片的宽高
}
return $local=array('x' => $x ,'y'=>$y);
}
#添加文字水印
public function fontMark($content ,$font_url ,$size,$angle){
#字体颜色
$col = imagecolorallocatealpha(self::$image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255),20);
#获取水印输出位置坐标
$local = self::setLocal(2);
imagettftext(self::$image,$size,$angle,$local['x'],$local['y'],$col,$font_url,$content);
#显示缩略图图片
self::show(self::$image);
#保存文字水印 没有添加保存路径
self::save(self::getNewName());
#返回水印图片的名字
return self::getNewName();
}
#添加图片水印
public function imageMark($url ,$alpha){
$info= getimagesize($url); #获取图片信息
$type=image_type_to_extension($info[2],false);
$fun = "imagecreatefrom{$type}";
#获取水印输出位置坐标
$local = self::setLocal(2);
$water = $fun($url); #水印图片
imagecopymerge(self::$image, $water, $local['x'], $local['y'],0 , 0,$info[0] , $info[1], 30);
#销毁图片水印
imagedestroy($water);
#显示缩略图图片
self::show(self::$image);
#保存图片水印 没有添加保存路径
self::save(self::getNewName());
#返回水印图片的名字
return self::getNewName();
}
#生成随机的 图片名字
/**
* @return string 返回一个新的名字
*
*/
private static function getNewName(){
#获取一个时间
$str = time();
#获取随机字符串
$string = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOASDFGHJKZXCVBNM1234567890";
for($i=0 ; $i<br>
<p>
以上就介绍了图片处理类 (改进版),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。</p>
<p>
</p>
Copier après la connexion