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

PHP图片裁剪、缩放

程序员文章站 2022-04-11 12:48:06
...
PHP图片裁剪、缩放

根据自定义的目标图高宽, 按目标图高宽比裁剪、缩放源图.

传入参数:
$source_path string 源图路径
$target_width integer 目标图宽度
$target_height integer 目标图高度

源图支持MIMETYPE: image/gif, image/jpeg, image/png.

function imagecropper($source_path, $target_width, $target_height)
{
	$source_info   = getimagesize($source_path);
	$source_width  = $source_info[0];
	$source_height = $source_info[1];
	$source_mime   = $source_info['mime'];
	$source_ratio  = $source_height / $source_width;
	$target_ratio  = $target_height / $target_width;

	// 源图过高
	if ($source_ratio > $target_ratio)
	{
		$cropped_width  = $source_width;
		$cropped_height = $source_width * $target_ratio;
		$source_x = 0;
		$source_y = ($source_height - $cropped_height) / 2;
	}
	// 源图过宽
	elseif ($source_ratio < $target_ratio)
	{
		$cropped_width  = $source_height / $target_ratio;
		$cropped_height = $source_height;
		$source_x = ($source_width - $cropped_width) / 2;
		$source_y = 0;
	}
	// 源图适中
	else
	{
		$cropped_width  = $source_width;
		$cropped_height = $source_height;
		$source_x = 0;
		$source_y = 0;
	}

	switch ($source_mime)
	{
		case 'image/gif':
			$source_image = imagecreatefromgif($source_path);
			break;

		case 'image/jpeg':
			$source_image = imagecreatefromjpeg($source_path);
			break;

		case 'image/png':
			$source_image = imagecreatefrompng($source_path);
			break;

		default:
			return false;
			break;
	}

	$target_image  = imagecreatetruecolor($target_width, $target_height);
	$cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);

	// 裁剪
	imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, 
	$cropped_width, $cropped_height); 
	// 缩放
	imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0,
	 $target_width, $target_height, $cropped_width, $cropped_height);

	header('Content-Type: image/jpeg');
	imagejpeg($target_image);
	imagedestroy($source_image);
	imagedestroy($target_image);
	imagedestroy($cropped_image);
}

以上就是PHP图片裁剪、缩放的内容,更多相关内容请关注PHP中文网(www.php.cn)!