<?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
php 生成水印图片
猜你喜欢
转载自blog.csdn.net/zchare/article/details/104011045
今日推荐
周排行