php 生成水印图片

<?php

function mergerImg($bigImgPath, $smallImgPath, $width, $height, $bigImgPaths) {
	$image_kuang = imagecreatefromstring(file_get_contents($smallImgPath));
	$image_photo = imagecreatefromstring(file_get_contents($bigImgPath));

	//创建一个新的,和大图一样大的画布
	$image_3 = imageCreatetruecolor(imagesx($image_photo),  imagesy($image_photo));

	//为真彩色画布创建白色背景,再设置为透明
	$color = imagecolorallocate($image_3, 255, 255, 255);
	imagefill($image_3, 0, 0, $color);
	imageColorTransparent($image_3, $color);

	/**
	 *  先copy图片,再copy画框,实现png的透明效果,将图片嵌入到画框里
	 *  imagecopymerge与imagecopy的不同:
	 *  imagecopymerge 函数可以支持两个图像叠加时,设置叠加层的透明度。imagecopymerge比imagecopy多一个参数,来设置透明度
	 *  PHP内部源码里,imagecopymerge在透明度参数为100时,直接调用imagecopy函数。
	 *  imagecopy 函数则不支持叠加透明,但拷贝时可以保留png图像的原透明信息,而imagecopymerge却不支持图片的本身的透明拷贝
	 *  即:使用imagecopymerge函数,可以实现打上透明度为30%的淡淡的水印图标,但图片本身的png就会变得像IE6不支持png透明那样,背景不透明了。
	 *  如果使用imagecopy函数,可以保留图片本身的透明信息,但无法实现30%的淡淡水印叠加,
	 */
	imagecopyresampled($image_3,$image_photo,0,0,0,0,imagesx($image_photo),imagesy($image_photo),imagesx($image_photo),imagesy($image_photo));
	imagecopy($image_3,$image_kuang, $width,$height,0,0,imagesx($image_kuang),imagesy($image_kuang));
	//存储图片路径
	imagejpeg($image_3, $bigImgPaths);
	return $bigImgPaths;
}

$bigImgPath = 'ren.jpg';//原图路径
$waterImgPath = 'tae.png';//水印图路径
$width = 0;//水印所在X坐标
$height = 0;//水印所在Y坐标
$bigImgPaths = 'new.png';//生成原图加水印新图路径
$path = $this->mergerImg($bigImgPath, $waterImgPath, $width, $height, $bigImgPaths);

//原文链接:https://blog.csdn.net/tangming20160613/article/details/77947067
发布了21 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zchare/article/details/104011045