php微擎功能-圖片加水印

yynan555發表於2020-10-24

php微擎功能-圖片加水印

在微擎中對圖片進行水印生成, 水印生成的位置在圖片的右下角, 按比例進行縮放新增.

直接上原始碼!

/**
 * 給圖片新增水印
 * @param $dst_file string 原圖位置(絕對位置或網路位置)
 * @param $logo_file string 水印圖片位置
 * @return string 加入水印後的圖片地址
 */
public static function addWaterMark($dst_file, $logo_file)
{
	// 建立圖片例項
	$dst = imagecreatefromstring(file_get_contents($dst_file));
	$logo = imagecreatefromstring(file_get_contents($logo_file));

	// 獲取水印圖片的寬高
	list($logo_w, $logo_h) = getimagesize($logo_file);
	list($dst_w, $dst_h, $dst_type) = getimagesize($dst_file);
	
	$logoNewHeight = $dst_h / 6;
	$logoNewWidth = $logo_w * $logoNewHeight/$logo_h;

	// 將水印圖片複製到目標圖片上,最後一個引數50 是設定透明度,這裡為半透明效果
//	imagecopymerge($dst, $logo, 10, 10, 0, 0, $logo_w, $logo_h, 50);
	// 如果水印圖片本身帶透明色, 則使用imagecopy方法
	imagecopyresized($dst, $logo, 10, $dst_h-$logoNewHeight-10, 0, 0, $logoNewWidth, $logoNewHeight, $logo_w, $logo_h);

	//輸出圖片
	$strs="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
	$filename=substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),10);
	$toFilePath = 'water_marked/'.time().'_'.$filename;
	switch($dst_type){
		case 1://GIF
			$toFilePath .= '.gif';
			imagegif($dst, ATTACHMENT_ROOT.$toFilePath);
			break;
		case 2://JPG
			$toFilePath .= '.jpg';
			imagejpeg($dst, ATTACHMENT_ROOT.$toFilePath);
			break;
		case 3://PNG
			$toFilePath .= '.png';
			imagepng($dst, ATTACHMENT_ROOT.$toFilePath);
			break;
		default:
			break;
	}

	return $toFilePath;
}

相關文章