项目简介 文本隐水印,用来把一段信息嵌入到一段明文中,使信息隐密不可见,并且旁人无法察觉到嵌入后明文的变化。 把信息不可见地嵌入到文本中 from text_blind_watermark import TextBlindWatermark2 password = '20190808' text = '这句话中有盲水印 watermark = 'github.com/guofei9987' text_blind_wm = TextBlindWatermark2(password=password, chr_type=(3, =watermark) print(text_with_wm) text_blind_wm2 = TextBlindWatermark2(password=password, chr_type=(3, text = "这句话中有盲水印,你能提取出来吗?"
com.sun.image.codec.jpeg.JPEGCodec; //import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * 说明:图片水印处理类 (String imagePath){ //文字水印 if(null ! strFW[1].toString(), imagePath, "", 1, Color.RED,Integer.parseInt(strFW[2]), Integer.parseInt(strFW[3] ), Integer.parseInt(strFW[4])); //文字 } } } //图片水印 if(null ! PathUtil.getClasspath() + Const.FILEPATHIMG+strIW[1], imagePath, Integer.parseInt(strIW[2]), Integer.parseInt(strIW[3]
ImageFont.truetype('1641789485961483.otf', fontsize) # 添加背景 new_img = Image.new('RGBA', (image.size[0] * 3, image.size[1] * 3), (255, 255, 255, 255)) new_img.paste(image, image.size) # 添加水印 font_len Image.new('RGBA', rgba_image.size, (0, 0, 0, 0)) image_draw = ImageDraw.Draw(text_overlay) # 水印数量 text}, font:{font}') image_draw.text((i, j), text, font=font, fill=(0, 0, 0, 50)) # 水印文字角度 text = "我是水印" # 水印文字 fontsize = 32 # 文字大小 img = Image.open(pic) fill_img
前言:本文探讨的是利用pageEvent事件在生成PDF文件的过程中把图片水印加好,这样导出的是加好水印的pdf文件。 1:加入依赖 <! artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency> 2:准备好水印图片 ,将图片拷贝到项目中 3:代码示例,利用pageEvent事件加水印 定义事件类 package itextpdf; import com.itextpdf.text.Document; import document.getPageSize().getWidth(); try { Image img = Image.getInstance(markImagePath);//生成水印图片 plainWidth, plainHeight);//设置图片大小 img.setAlignment(Image.UNDERLYING); // 在字下面 //设置水印图片的坐标
现在很多人都在使用小红书app,但大家肯定都会有同一个问题,图片怎么保存,重点是怎么保存图片无水印。看到好看的图片想保存下来,可是却不喜欢看到有水印。 下载完图片它会自动保存一个文件夹,我们打开文件夹可以看到里面的图片都没有水印哦。 如果有多个图片批量下载,看第一个步骤,你会发现链接一行一个自动粘贴到工具里面如下图所示:采集完点立即下载 还可以批量下载小红书视频哦,打开文件夹,查看视频,都是高清原视频,且无水印,还在迷茫的你,不妨试试小编这个方法吧
技术背景我们在对接外部开发者的时候,遇到这样的技术诉求,客户用于地下管道检测场景,需要把摄像头的数据拉取过来,然后叠加上实时位置、施工单位、施工人员等信息,然后对外输出新的RTSP流,并本地录制一份带动态水印叠加后的数据 技术实现废话不多说,下图先通过Android平台拉取RTSP流,然后把解码后的yuv或rgb数据回上来,以图层的形式投递到推送端,需要加水印的话,添加文字水印或图片水印(系动态水印)图层,底层做动态叠加后二次编码打包 public static final int NT_FRAME_FORMAT_ABGR = 2;// public static final int NT_FRAME_FORMAT_I420 = 3; ;return;}Log.i(TAG, "publisherHandle=" + handle);int fps = 25;int gop = fps * 3;initialize_publisher( ;return;}startLayerPostThread();btnRTMPPusher.setText("停止推送");}});总结以上是Android平台拉取RTSP数据,然后添加动态水印后,二次输出到轻量级
from PIL import Image, ImageDraw, ImageFont import os def water_work(img): x, y = img.size textx = int(x*1.5) texty = int(y*1.5) blank = Image.new('RGB', (textx, texty), 'white') draw = ImageDr
技术背景 我们在做Windows平台流数据转发的时候,除了常规的RTSP转RTMP推送外,还有个场景就是,好多开发者希望拉取的RTSP流,做二次视频分析,或者加动态水印等,处理后的数据,再二次编码推送到 技术实现 本文就以Windows平台拉取RTSP流,回调yuv数据到上层,处理后的数据,二次投递到RTMP服务和轻量级RTSP服务,然后叠加动态水印,并实现处理后的数据实时录像功能,废话不多说,先上图: 上图拉取了RTSP流,然后左侧窗体显示,添加动态水印后,再在右侧预览,并把数据重新投递到推送端,考虑到编码性能,我们可选硬编码。 if (is_h264_encoder) { publisher_wrapper_.SetVideoEncoderProfile(3) 流二次编辑(如增加动态水印)或视频分析(视觉算法处理)后,再录像、转推至RTMP或轻量级RTSP服务流程,经过二次处理后的流数据,配合我们的SmartPlayer,依然可以整体毫秒级的延迟体验
,导致没办法直接使用,其实去除视频水印没想象中的难,我们可以借助一些实用的去水印工具,来达到快速去水印的效果,那么今天就来给大家分享3种快速去除视频水印的方法! 软件安利一:水印云 易操作指数:★★★★ 相信也有不少小伙伴使用过这款软件?顾名思义,它主打水印处理功能,支持对视频或图片进行加水印/去水印两种操作。 致力于用AI让图像处理变的更简单,处理后的视频几乎看不见水印去除的痕迹,能保留视频的画质和流畅度。 另外我们也可以借助该软件的手机版本去除视频水印,效果同样不错。 当然,它也少不了视频去水印功能,借助其中的“高斯模糊”工具就可以实现了。 不过该软件需要较强的专业基础,操作并非那么简单明了,如果你有一定基础可以尝试用该软件来完成视频去水水印的目的哦 好了,以上就是今天要分享的“3种视频去水印的方法”。
DEDECMS织梦上传图片加文字水印带阴影效果的方法如下:1、在电脑中打开C\windows\Font\,找到字体simhei.ttf,上传到到网站/data/mark/下。 2、进入DedeCMS管理后台,选择系统 -> 图片水印设置选择水印的文件类型:文字文字水印默认字体大小是20,我觉得改成10左右比较合适,不影响图片的效果。 水印图片文字字体大小:103、打开include目录下的image.func.php文件,并找到代码折叠PHP 代码$cfg_watermarktext['shadowx'] = '0'; $cfg_watermarktext cfg_watermarktext['shadowy'] = '1'; $cfg_watermarktext['shadowcolor'] = '255,0,255'; 这样就是白色字、紫色阴影的文字水印了
在点击“加水印”的按钮时,建立两个BitmapData,然后里面分别存放图片和需要添加的文字,之后将两个BitmapData转换为Bitmap添加至舞台,再转成一张新的Bitmap。 > 2: <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 3: layout TextArea id="contentTxt" width="300" /> 189: 190: <mx:Button label="加<em>水印</em>
技术背景我们在对接RTSP播放器相关的技术诉求的时候,遇到这样的需求,客户做特种设备巡检的,需要把摄像头拍到的RTSP流拉下来,然后添加动态水印后,再生成新的RTSP URL,供平台调用。 真个流程需要延迟尽可能的低,分辨率要支持到1080p,并需要把添加过动态水印的数据,保存到本地。 技术实现在此之前,大牛直播SDK有非常成熟的RTSP播放、轻量级RTSP服务和录像模块,要做的就是,拉取到RTSP流后,把解码后的YUV或RGB回调给上层,上层通过图层的形式,添加动态文字水印(图片水印亦可 ,添加支持了硬编码选项设置)、动态水印设置、轻量级RTSP服务、实时录像和RTMP推送。 拉流二次编码,整体逻辑不复杂,就是把数据回调后,二次处理,我们推送端设计的是图层的形式,所以,回调后的数据,直接作为第0层,文字水印作为第一层,如果需要图片水印,图片水印作为第三层即可。
一、相关知识 给内容加不同的颜色, 可以结合echo -e的参数,内容的颜色用数字表示,范围为30-37,每个数字代表一种颜色。 二、案例: 开发一个给指定内容加质地更颜色的脚本 使用case语句,通过脚本传入指定内容和指定颜色,根据指定颜色输出指定内容 cat /server/scripts/color.sh #!
通过 Android 端 RTSP 播放器模块及 YUV 数据回调机制,系统可在实时播放的同时进行 动态水印叠加、录像存档、二次编码以及轻量级 RTSP 服务再发布。 2️⃣ 中间层:水印叠加与数据转投递在 demo 中,播放器回调的 YUV 数据会交由业务层进行轻量级图像处理。 常见操作包括: 叠加设备编号、时间戳、水印 Logo; 局部标注(如检测点框选)。 3️⃣ 推送端:再编码与录像/再发布推送端收到帧数据后,通过 JNI 调用进入 SmartPublisherJniV2 的底层模块, 由其统一调度录像(MP4/FLV)与轻量级 RTSP/RTMP/HTTP-FLV 拉流并解码; 2️⃣ 解码后帧通过 YUV 回调直接送入推送端接口(LibPublisherWrapper); 3️⃣ 推送端(SmartPublisher)负责二次编码与录像,再可选开启 RTSP/ 它让系统拥有三种能力: 可看:低延迟、高稳定的实时画面; 可用:YUV 数据可供 AI/水印/再编码复用; 可传:轻量 RTSP/RTMP/FLV 服务可随时转发。
继之前一篇科普文《如何使用RTSP推流组件EasyPusher将MP4文件推到EasyDarwin开源平台》发布后,有开发者提出疑问:假如需要显示视频直播时间,如何在推送的时候可以自定义在视频上叠加时间水印 fontfile=arial.ttc:x=w-tw-20:y=30:fontcolor=white:fontsize=11:text=‘2020-10-10 %{localtime:%H\:%M\:%S}’” -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://172.81.216.155:554/test.sdp 此命令解释,循环把test.mp4读出来以RTSP协议方式推送到172.81.216.155
加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 可以把数组digits倒置,reversed(digits)然后逐项加1,最后如果为0,则直接对数组下一项赋值1(python3数组可动态扩展)。最后返回倒置数组。 再就是如上转换成string方式。 先把数组转成一个数字,然后加一,最后转换字符串逐个输出char字符并强制转换int型
技术背景我们在做Windows平台RTMP推送、轻量级RTSP服务的时候,遇到过这样的技术需求,除了常规的png图片水印外,开发者希望能在桌面或摄像头上,叠加上实时时间和位置信息,并保存到图像里。 技术实现本文以大牛直播SDK的摄像头采集+动态文字水印为例,谈谈如何实现的,简单来说,这块分两步,第一步,如何从文字里面获取到rgb数据,第二步,如何吧rgb数据叠加到摄像头上? 废话不多说,先上图,选中采集摄像头和摄像头添加文字水印,如果需要默认打开动态文字水印,直接打开即可,如需关闭,随时可以关闭或二次打开:本文以启动个轻量级RTSP服务为例,效果如下,可以清楚的看到右侧播放端 ,显示实时更新的文字信息(更新间隔,可以自行设置):打开摄像头添加文字水印: private void btn_text_osd_Click(object sender, EventArgs e) { if (btn_text_osd.Text.Equals("打开动态文字水印")) { if (!
上一篇我们介绍了RTSP数据包的格式,在整个rtsp的交互过程,sdp也是很重要不可获取的一环,本篇我们来详细介绍一下sdp的格式! 来看一个实际的抓包文件: 3.Session Name(必选) 格式:s= 会话名称,在整个会话中有且只有1个"s=" 来看一个实际的抓包文件: ? 会话级别中有一个属性a,a=control:rtsp://192.17.1.63:554,表示新增的属性的类型为control,值为rtsp://192.17.1.63:554 11.media information packetization-mode=1; sprop-parameter-sets=Z01AKI2NQDwBE/LgLcBAQFAAAD6AAAw1DoYACYFAABfXgu8uNDAATAoAAL68F3lwoA 关于sdp的介绍就到这里,下一篇我们开始详细介绍RTSP的各个选项,欢迎持续关注!
) Unity3d RTSP/RTMP直播播放端SDK视频演示 Unity3D-Windows RTSP/RTMP播放端exe下载(更新于2020/04/29) Unity3D-Android RTSP OCX控件接口调用; Unity3D RTMP/RTSP直播播放器SDK 业内首家Windows支持Unity3D的超低延迟RTMP/RTSP直播播放器SDK,支持快照、录像、实时静音、view 播放器SDK; Unity3D RTMP/RTSP直播播放器SDK 业内首家iOS支持Unity3D的超低延迟RTMP/RTSP直播播放器SDK,支持快照、录像、实时静音、view旋转、快速切换 如实时字幕/时间戳/题目分发/公告广播等),播放端做相应解析和回显; 本地下载 很多开发者反应,由于项目庞大,github下载整个工程很慢,我们已经把相关demo文件和使用说明,全部上传到QQ群共享(加群请简要描述使用场景 [实时水印]支持动态水印设置,完美支持文字水印、实时时间水印和图片水印; [透明度]可以设置透明度处理(设置遮盖); 对应Demo: 测试程序:SmartPublisherDemo.exe;
} from '/@/hooks/web/useWatermark'; 解构,获取变量 const { setWatermark, clear } = useWatermark(); 页面加载后添加水印 setWatermark('水印内容')