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

php生成缩略图,加水印种

程序员文章站 2024-01-22 19:27:16
...
php生成缩略图,加水印类

这个一个简单的GD库操作

 $dinfo['height'] || $winfo['width'] > $dinfo['width']) {
			return false;
		}

		// 两张图,读到画布上! 但是图片可能是png,可能是jpeg,用什么函数读?
		$dfunc = 'imagecreatefrom' . $dinfo['ext'];
		$wfunc = 'imagecreatefrom' . $winfo['ext'];

		if (!function_exists($dfunc) || !function_exists($wfunc)) {
			return false;
		}

		// 动态加载函数来创建画布
		$dim = $dfunc($dst);
		// 创建待操作的画布
		$wim = $wfunc($water);
		// 创建水印画布

		// 根据水印的位置 计算粘贴的坐标
		switch($pos) {
			case 0 :
				// 左上角
				$posx = 0;
				$posy = 0;
				break;

			case 1 :
				// 右上角
				$posx = $dinfo['width'] - $winfo['width'];
				$posy = 0;
				break;

			case 3 :
				// 左下角
				$posx = 0;
				$posy = $dinfo['height'] - $winfo['height'];
				break;

			default :
				$posx = $dinfo['width'] - $winfo['width'];
				$posy = $dinfo['height'] - $winfo['height'];
		}

		// 加水印
		imagecopymerge($dim, $wim, $posx, $posy, 0, 0, $winfo['width'], $winfo['height'], $alpha);

		// 保存
		if (!$save) {
			$save = $dst;
			unlink($dst);
			// 删除原图
		}

		$createfunc = 'image' . $dinfo['ext'];
		$createfunc($dim, $save);

		imagedestroy($dim);
		imagedestroy($wim);

		return true;
	}

	/**
	 thumb 生成缩略图
	 等比例缩放,两边留白
	 **/
	public static function thumb($dst, $save = NULL, $width = 200, $height = 200) {
		// 首先判断待处理的图片存不存在
		$dinfo = self::imageInfo($dst);
		if ($dinfo == false) {
			return false;
		}

		// 计算缩放比例
		$calc = min($width / $dinfo['width'], $height / $dinfo['height']);

		// 创建原始图的画布
		$dfunc = 'imagecreatefrom' . $dinfo['ext'];
		$dim = $dfunc($dst);

		// 创建缩略画布
		$tim = imagecreatetruecolor($width, $height);

		// 创建白色填充缩略画布
		$white = imagecolorallocate($tim, 255, 255, 255);

		// 填充缩略画布
		imagefill($tim, 0, 0, $white);

		// 复制并缩略
		$dwidth = (int)$dinfo['width'] * $calc;
		$dheight = (int)$dinfo['height'] * $calc;

		$paddingx = (int)($width - $dwidth) / 2;
		$paddingy = (int)($height - $dheight) / 2;

		imagecopyresampled($tim, $dim, $paddingx, $paddingy, 0, 0, $dwidth, $dheight, $dinfo['width'], $dinfo['height']);

		// 保存图片
		if (!$save) {
			$save = $dst;
			unlink($dst);
		}

		$createfunc = 'image' . $dinfo['ext'];
		$createfunc($tim, $save);

		imagedestroy($dim);
		imagedestroy($tim);

		return true;

	}

}

// print_r(ImageTool::imageInfo('./home.jpg'));
/*
 echo ImageTool::water('./home.jpg','./smallfeng.png','home1.jpg',0)?'OK':'FAIL';
 echo ImageTool::water('./home.jpg','./smallfeng.png','home2.jpg',1)?'OK':'FAIL';
 echo ImageTool::water('./home.jpg','./smallfeng.png','home3.jpg',2)?'OK':'FAIL';
 echo ImageTool::water('./home.jpg','./smallfeng.png','home4.jpg',3)?'OK':'FAIL';
 */



php生成缩略图,加水印种

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频