jtahstu的博客

root@jtahstu.com   Github   英文博客  

最新碎语:以后没事写写小的知识点吧

您的位置:jtahstu的博客 >笔记> PHP图片缩放

PHP图片缩放

<?php
/**
 用于对图片进行缩放
 @param	string	$filename	图片的URL
 @width	int		$width		设置图片缩放的最大宽度
 @height	int		$height		设置图片缩放的最大高度
 */
function thumb($filename, $width = 640, $height = 400) {
	/* 获取原图像$filename的宽度$width_orig和高度$hteight_orig */
	list($width_orig, $height_orig) = getimagesize($filename);

	/* 根据参数$width和$height值,换算出等比例缩放的高度和宽度 */
	if ($width && ($width_orig < $height_orig)) {
	    $width = ($height / $height_orig) * $width_orig;
	} else {
	    $height = ($width / $width_orig) * $height_orig;
	}

	/* 将原图缩放到这个新创建的图片资源中 */
	$image_p = imagecreatetruecolor($width, $height);
	/* 获取原图的图像资源 */
	$image = imagecreatefromjpeg($filename);

	/*使用imagecopyresampled()函数进行缩放设置 */
	imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

	/* 将缩放后的图片$image_p保存, 100(最佳质量,文件最大) */
	imagejpeg($image_p, $filename, 100);

	imagedestroy($image_p);
	//销毁图片资源$image_p
	imagedestroy($image);
	//销毁图片资源$image
}

//	thumb("66.jpg", 640,400);
//	thumb("66.jpg",320,200);
thumb("66.jpg", 500, 500);
/* thumb("brophp.jpg", 200,2000);  		//如果按一边进行等比例缩放,只需要将另一边给个无限大的值 */
?>

三张图片依次为原图,缩小一半,再缩小一半,同样的文件大小也在变化,当然放大也是可以的,参数设置的问题,显然,以上说的这些都是等比例放大或缩小。

还有一个按一边的等比例放大缩小,也很好理解,因为在函数里调整了宽或高。

如果把函数中间调整图片的宽高比注释掉的话,图片的宽高会按所设置的参数输出,图片相当于被拉伸或压扁了,如下图。


注:实际上第一张图片是1280x800px的,但是在显示的时候由于宽度不够,所以博客系统也会进行缩小,这就是一个简单而普遍的例子 。

更正:说博客系统进行缩小应该是不准确的,这是由html中的div宽度所决定的,图片宽度过大,会缩小以适应html的显示,至于是谁来缩小显示的本人并不清楚,实际上图片并没有发生任何改变,仍然是1200x800px的,只是显示的小了。


--《细说PHP》第16章第三节 P392-393 by jtahstu

---

本文章采用 知识共享署名2.5中国大陆许可协议 进行许可,欢迎转载,演绎或用于商业目的。

---

二维码加载中...

扫一扫移动端访问O(∩_∩)O

发表评论

91 + 72 =
路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(1)

图片的裁剪,P394
jtahstu 3年前 (2016-01-11) 回复
正在加载中……