GIF加水印

目的:实现GIF加水印的效果,实现水印文字在GIF移动的效果
脑补知识:帧,GIF是一组帧的集合,帧是一张张图片按照顺序进行展示,每张帧有自己的延迟时间,所以整体来看GIF播放效果就是每张帧延迟一定的时间,最终看到GIF播放的效果
关于帧延迟:该帧的延迟时间就是下一帧的间隔时间
实现思路
通过2345看图王发现一个保存帧的功能,保存之后在一个文件夹下发现了一组静态的图片
也就说明可以从GIF中提取帧
第一步:从GIF提取帧
第二步:对提取之后的帧,也就是每张图单独的使用GDI编程加水印
第三步:关键点:合成,合成不是我来做的用到一个开源的组件Gif.Components,这个组件提供了这个功能
通过给这个组件输入一组按一定顺序的Image对象,并设置一个延迟,最终输出一个GIF图片 实现我们加水印的功能
提取帧
GIF通过绝对路径的方式初始化系统中的一个Image对象,该对象可以获取到GIF所有的帧GetFrameCount
循环遍历,并激活当前帧,在使用gif.Save(fileName, ImageFormat.Jpeg);把帧提取出来最终完成帧的提取工作
下一步就是逐个加水印
WaterMark 来自于别人写的类,可以实现文字水印和图片水印
既然加水印,就可以设置水印的位置,对于提取之后的每张帧,我们在处理完第一张帧是之后,让第二张帧偏移指定的像素,这样合成之后就可以实现文字的移动效果
通过控制x-y 两个方向上的偏移,文字可以实现各种移动的效果
批量加水印
多线程的使用:对此有几点说明
1.在线程上调用方法,所谓多线程,其实就是在线程上调用方法,并且传递你自定义的数据对象【我觉得学习多线程入门这一点一定要记住:方法是在线程上调用的,线程一开启方法就会执行】
2.包:就是传递给线程指定方法的自定义的参数对象
所以我将整个处理GIF加水应的写在一个总的函数里面,GifRun(object gd) 该函数接收一个自定义参数,包括了该函数所需要的全部数据
通过外面的循环实例化线程对象,开始执行每一个加水印的任务【一个GIF的处理就是一个任务,就需要一个线程对象来处理】
注意点:所有的都使用实例对象来完成,暂时不适用静态的方法和字段
美中不足
GIF合成的组件处理完成之后GIf的效果和原始的GIF多少还有些差别,这个地方暂时无法解决

【思路】-GIF加水印相关推荐

  1. 如何用手机打开dcm格式图片_如何防止自己的图片被盗用?这 4 招教你优雅加水印...

    出门旅游一趟,好不容易拍到一组相当满意的图片.想要把这些图片上传到社交平台,如何才能让大家一看就知道这是自己拍的作品,同时又防止盗图呢? 答案是在图片上加上自己的水印,这次有用功将和大家分享下,如何快 ...

  2. linux加水印乱码,linux java程序加水印及中文乱码方案(二)

    上一篇介绍了在linux, centos图片加水印出现乱码的解决方案,<linux java程序加水印及中文乱码方案>, 在真实项目环境下,一是部署在虚拟机服务器,还有项目部署在docke ...

  3. 全局热键给截图自动加水印并win10系统通知

    大家好,我是小小明. 常写博客或公众号的号主们都非常清楚,一旦出名自己的文章就容易被一些培训机构胡乱搬运,这些无良培训机构实在太多,靠举报根本举报不过来,不如直接利用他们给自己做一波宣传.基本的思路就 ...

  4. 关于安卓视频加水印与剪辑功能实现

    内容如题,文末有demo 核心功能使用rxffmpeg实现 感谢开源sdk-rxffmpeg 今日,公司有个需求,就是对视频实现剪辑,和加水印.先上图: 视频加水印效果 视频剪辑 使用方法 Video ...

  5. android yuv加水印_Android-Camera添加水印(最简单)

    思路: 我的实时视频流需要加水印,我的解决思路是:将水印图片转换成YUV格式,在Camera中onPreviewFrame中将获取到的视频流做一个叠加 1:水印转YUV //从drawble中获取水印 ...

  6. java图片加水印上传工具类_基于Spring Boot实现图片上传/加水印一把梭操作

    文章共537字,阅读大约需要 2分钟 ! 概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站.自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实现从 ...

  7. Android视频编辑器(三)给本地视频加水印和美颜滤镜

    前言          在上两篇文章中,我们分别实现了通过OpenGL预览.录制视频,以及在预览和录制的时候加上视频水印和美白效果,而作为一个视频编辑器,当然不仅仅是录制视频,也会有从本地选择视频,然 ...

  8. 微信小程序背景加水印 简单版

    小程序页面增加水印 效果 因为所有页面都要加水印,所以肯定是要用自定义组件实现. 思考路程 第一种 最开始考虑的是canvas生成图片,转换成base64做一张背景图,然后才了解到水印不能直接在元素上 ...

  9. android 照片加水印,Android 实现图片加水印或logo

    我们常常会遇到为图像加水印或logo的需求,一般可以通过三方库或者软件实现,但其实加水印非常简单,仅用一个函数即可实现. 实现思路,逐一计算水印和原图重叠部分的像素点的RGBA分量: float pe ...

最新文章

  1. maven scala plugin 实现jvmArgs,执行过程原理解析笔记
  2. 两天入门Python基础(附代码实现)
  3. C语言实现二分法检索binary search(附完整源码)
  4. YBTOJ:前缀询问(trie树)
  5. tar linux 举例,linux 的tar 命令详解举例
  6. java for遍历hashmap_Java中HashMap遍历几种方式
  7. mysql 拼接_mysql-gt;redis C++
  8. 《Python数据挖掘:概念、方法与实践》一1.3 在数据挖掘中使用哪些技术
  9. Myeclipse2017破解:成功解决me Trial expired 0 days ago mgeclipse It's now time to buy the best IDE for yo
  10. 计算机组成原理课程设计——简单CISC模型机设计
  11. quoted string not properly terminated错误提示
  12. 女子发现前夫外遇索要2000万
  13. Addressable设置的要点
  14. wer 流程图编程_孩子学完各个阶段的编程课能够参加哪些比赛?
  15. 解决hadoop损失文件删除后出现DEPRECATED: Use of this script to execute hdfs command is deprecated.
  16. 论文结论与摘要的区别
  17. mac 下安装 Crypto
  18. 世上最小的卡片电脑 RaspberrysPi Zero W 入手体验
  19. html怎么做密码的判断,用户密码格式判断 .html
  20. mysql 远程访问不行解决方法 Host is not allowed to connect to this MySQL server

热门文章

  1. 高级软件工程必做作业2:视频剪辑软件调研
  2. 超魔性的国民游戏,贪吃蛇大作战,老板出4000元现金悬赏谁是贪吃蛇之神:这不是我嘛?
  3. 谷歌验证码 ReCAPTCHA 的模拟点击破解方案来了!
  4. html生成excel附件时格式处理
  5. glob php,php使用glob函数遍历文件和目录详解
  6. 一级计算机考证多少分过
  7. 行政边界下载(省、市、区、县)
  8. 【CF 149D】Coloring Brackets(dp)
  9. 这波大裁员!真的是花样百出!
  10. 【PDFBox】PDFBox操作PDF文档之添加本地图片、添加网络图片、图片宽高自适应、图片水平垂直居中对齐