欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

图片处理类 (改进版)

程序员文章站 2022-05-02 13:16:08
...
$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

以上就介绍了图片处理类 (改进版),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。