在程序开发时,上传图片加水印是常见的功能。
但是常规加水印的方法对GIF动画图片就会产生问题,加上水印后,GIF 图片就不动了。
那么有没有办法给GIF动画图片加上水印后,保持原有的动画效果呢(效果图在最后)?
下面就给大家详细的说说:
一、首先分别下载3个开源的php类库
imageworkshop
composer 地址:https://packagist.org/packages/sybio/image-workshop
GifFrameextractor
composer 地址:
gifcreator
composer 地址:
二、准备好gif图片
三、主要代码
1.你的GIF地址
$gifPath = '123.gif';
2.获取gif宽和高(后面有用)
$imginfo=getimagesize($gifPath);
3.判断图片是否是GIF动画图
if (GifFrameExtractor::isAnimatedGif($gifPath))
4.将GIF图片释放成一帧一帧的图
$gfe = new GifFrameExtractor();
$frames = $gfe->extract($gifPath,true);
5.初始化水印
$watermarkLayer = ImageWorkshop::initTextLayer('代码庸医', ';, 15);
我这里是直接用字作为水印,也可以用图片作为水印,方法如下:
$watermarkLayer = ImageWorkshop::initFromPath('你的水印图片地址');
6.给每一个图片帧加上水印
foreach ($frames as $frame)
{
$frameLayer = ImageWorkshop::initFromResourceVar($frame['image']);
$frameLayer->resizeInPixel($imginfo[0], $imginfo[1], true); // 设置图片高度宽度
$frameLayer->addLayerOnTop($watermarkLayer, 20, 20, 'LB'); // 水印位置
$retouchedFrames[] = $frameLayer->getResult();
}
7.合并每一帧生成加上水印的GIF图片
$gc = new GifCreator();
$gc->create($retouchedFrames, $gfe->getFrameDurations(), 0);
file_put_contents('pic;, $gc->getGif());
下面是整体代码:
最后的效果图:
生成前
生成后
1.文章《winform怎么在图片上添加水印》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《winform怎么在图片上添加水印》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好