沐朽阁
即使过了千年,世界上也有许多事情没有改变。
沐朽阁
PHP 裁剪保留原透明度、原尺寸函数
PHP 裁剪保留原透明度、原尺寸函数

序言

PHP 裁剪保留原透明度、原尺寸函数,记得打开GD库。

代码部分

/**
 * 重置图片文件大小
 * @param  string $filePath 文件路径
 * @param  int $xmax     最大宽度
 * @param  int $ymax     最大高度
 * @return boolean       true/false
 */
ResetImageFileSize('C:\Users\Administrator\Desktop\0.46574.png',100,100);
function ResetImageFileSize($filePath, $xmax, $ymax) {
	if(filesize($filePath) == 0) return 'error_file';
	//$extension = pathinfo($filePath)['extension'];
	$extension = explode('/',getimagesize($filePath)['mime'])[1];
	$img  = null;
	switch ($extension) {
		case 'jpg':
		        case 'jpeg':
		            $img = imagecreatefromjpeg($filePath);
		break;
		case 'png':
		            $img = imagecreatefrompng($filePath);
		break;
		case 'gif':
		            $img = imagecreatefromgif($filePath);
		break;
		case 'webp':
		            $img = imagecreatefromwebp($filePath);
		break;
	}
	if(is_null($img)) return false;
	list($x,$y)  = getimagesize($filePath);
	if($x <= $xmax && $y <= $ymax) {
		return true;
	}
	/*保留原宽高比率*/
	if($x >= $y) {
		$newX = ($x > $xmax) ? $xmax : $x;
		$newY = $newX * ($y / $x);
	} else {
		$newY = ($y > $ymax) ? $ymax : $y;
		$newX = ($x / $y) * $newY;
	}
	$img2 = imagecreatetruecolor($newX, $newY);
	imageantialias($img2,true);
	//使用抗锯齿
	if($extension == 'png') {
		$Color = imagecolorallocatealpha($img2, 0, 0, 0, 127);
		//设置透明
	} else {
		$Color = imagecolorallocate($img2,255,255,255);
	}
	imagecolortransparent($img2,$Color);
	imagefill($img2,0,0,$Color);
	if(function_exists('imagecopyresampled')) {
		/*生成图像质量较好,但速度相比较慢*/
		imagecopyresampled($img2, $img, 0, 0, 0, 0, floor($newX), floor($newY), $x, $y);
	} else {
		/*生成图像质量较差,但速度相比较快*/
		imagecopyresized($img2, $img, 0, 0, 0, 0, floor($newX), floor($newY), $x, $y);
	}
	switch ($extension) {
		case 'jpg':
		        case 'jpeg':
		            imagejpeg($img2,$filePath,100);
		break;
		case 'png':
		            imagesavealpha($img2,true);
		imagepng($img2,$filePath);
		//imagepng($img2,$filePath,9);
		break;
		case 'gif':
		            imagegif($img2,$filePath);
		break;
		default:
		            imagejpeg($img2,$filePath,100);
		break;
	}
	imagedestroy($img2);
	return true;
}

赞赏
©版权归属沐朽阁所有
首页      未分类      PHP 裁剪保留原透明度、原尺寸函数

发表评论

textsms
account_circle
email

 

沐朽阁

PHP 裁剪保留原透明度、原尺寸函数
序言 PHP 裁剪保留原透明度、原尺寸函数,记得打开GD库。 代码部分 /** * 重置图片文件大小 * @param string $filePath 文件路径 * @param int $xmax 最大宽度 * @par…
扫描二维码继续阅读
2020-11-08