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

PHP生成智能缩略图 博客分类: PHP php图片缩略图 

程序员文章站 2024-03-25 14:43:10
...

 

<?php
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, $dstpath) {
		$this->srcimg = $img;
		$this->resize_width = $wid;
		$this->resize_height = $hei;
		$this->cut = $c;

		//图片的类型
		$this->type = strtolower ( substr ( strrchr ( $this->srcimg, "." ), 1 ) );

		//初始化图象
		$this->initi_img ();

		//目标图象地址
		$this->dst_img ( $dstpath );

		$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($dstpath) {
		$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 = $dstpath;

		//echo $this->dstimg;
	}
}
$resizeimage = new resizeimage ( "11.jpg", "200", "150", "1", "17.jpg" );
?>