com.sun.image.codec.jpeg.JPEGCodec; //import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * 说明:图片水印处理类 String strFWATERM,strIWATERM; static{ strFWATERM = Tools.readTxtFile(Const.FWATERM); //读取文字水印配置 strIWATERM = Tools.readTxtFile(Const.IWATERM); //读取图片水印配置 } /** * 刷新 */ public static (String imagePath){ //文字水印 if(null ! strFW[2]), Integer.parseInt(strFW[3]), Integer.parseInt(strFW[4])); //文字 } } } //图片水印
image.size[0] * 3, image.size[1] * 3), (255, 255, 255, 255)) new_img.paste(image, image.size) # 添加水印 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)) # 水印文字角度 image.size[1] * 2)) return image_with_text if __name__ == '__main__': pic = '1.png' # 需要加水印的图片 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数据回上来,以图层的形式投递到推送端,需要加水印的话,添加文字水印或图片水印(系动态水印)图层,底层做动态叠加后二次编码打包 ,通过启动轻量级RTSP服务,发布RTSP流,生成二次处理后的RTSP新的拉流url,如果需要推送至RTMP,只要调用推送RTMP的接口即可,本地录制,可以设置录制目录等信息,保存二次编码后的MP4文件到本地 = 0) {libPublisher.CloseRtspServer(rtsp_handle_);rtsp_handle_ = 0;Log.e(TAG, "创建rtsp server端口失败! ;return;}startLayerPostThread();btnRTMPPusher.setText("停止推送");}});总结以上是Android平台拉取RTSP数据,然后添加动态水印后,二次输出到轻量级
项目简介 文本隐水印,用来把一段信息嵌入到一段明文中,使信息隐密不可见,并且旁人无法察觉到嵌入后明文的变化。 把信息不可见地嵌入到文本中 from text_blind_watermark import TextBlindWatermark2 password = '20190808' text = '这句话中有盲水印 使其在不同的系统环境中有更好的表现 from text_blind_watermark import TextBlindWatermark2 password = '20190808' text = '这句话中有盲水印 text = "这句话中有盲水印,你能提取出来吗?" twm_new = TextBlindWatermark(password=password) wm_extract = twm_new.extract(text_embed) print("解出的盲水印
技术背景 我们在做Windows平台流数据转发的时候,除了常规的RTSP转RTMP推送外,还有个场景就是,好多开发者希望拉取的RTSP流,做二次视频分析,或者加动态水印等,处理后的数据,再二次编码推送到 技术实现 本文就以Windows平台拉取RTSP流,回调yuv数据到上层,处理后的数据,二次投递到RTMP服务和轻量级RTSP服务,然后叠加动态水印,并实现处理后的数据实时录像功能,废话不多说,先上图: 上图拉取了RTSP流,然后左侧窗体显示,添加动态水印后,再在右侧预览,并把数据重新投递到推送端,考虑到编码性能,我们可选硬编码。 = null) publisher_wrapper_.SetResolution(width, height); } 设置文字水印字体、字号: 流二次编辑(如增加动态水印)或视频分析(视觉算法处理)后,再录像、转推至RTMP或轻量级RTSP服务流程,经过二次处理后的流数据,配合我们的SmartPlayer,依然可以整体毫秒级的延迟体验
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'; 这样就是白色字、紫色阴影的文字水印了
技术背景我们在对接RTSP播放器相关的技术诉求的时候,遇到这样的需求,客户做特种设备巡检的,需要把摄像头拍到的RTSP流拉下来,然后添加动态水印后,再生成新的RTSP URL,供平台调用。 真个流程需要延迟尽可能的低,分辨率要支持到1080p,并需要把添加过动态水印的数据,保存到本地。 技术实现在此之前,大牛直播SDK有非常成熟的RTSP播放、轻量级RTSP服务和录像模块,要做的就是,拉取到RTSP流后,把解码后的YUV或RGB回调给上层,上层通过图层的形式,添加动态文字水印(图片水印亦可 ,添加支持了硬编码选项设置)、动态水印设置、轻量级RTSP服务、实时录像和RTMP推送。 拉流二次编码,整体逻辑不复杂,就是把数据回调后,二次处理,我们推送端设计的是图层的形式,所以,回调后的数据,直接作为第0层,文字水印作为第一层,如果需要图片水印,图片水印作为第三层即可。
继之前一篇科普文《如何使用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
通过 Android 端 RTSP 播放器模块及 YUV 数据回调机制,系统可在实时播放的同时进行 动态水印叠加、录像存档、二次编码以及轻量级 RTSP 服务再发布。 height_, 0, 0,0,0, 0,0);}}}通过该接口,开发者可直接在内存中获取逐帧图像数据,无需额外解码或拷贝,即可实现多种高阶功能: 动态叠加企业 Logo / 时间戳 / 检测编号等水印信息 1️⃣ 播放端:RTSP 解码与 YUV 回调机器人前端摄像头通过内部 RTSP 服务输出实时码流。 2️⃣ 中间层:水印叠加与数据转投递在 demo 中,播放器回调的 YUV 数据会交由业务层进行轻量级图像处理。 常见操作包括: 叠加设备编号、时间戳、水印 Logo; 局部标注(如检测点框选)。 它让系统拥有三种能力: 可看:低延迟、高稳定的实时画面; 可用:YUV 数据可供 AI/水印/再编码复用; 可传:轻量 RTSP/RTMP/FLV 服务可随时转发。
技术背景我们在做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 (!
/接收SDK 支持推送端通过H.264 SEI信息扩展,实时传输文本/二进制数据信息(如实时字幕/时间戳/题目分发/公告广播等),播放端做相应解析和回显; 视频处理SDKAndroid文字水印、 如实时字幕/时间戳/题目分发/公告广播等),播放端做相应解析和回显; 本地下载 很多开发者反应,由于项目庞大,github下载整个工程很慢,我们已经把相关demo文件和使用说明,全部上传到QQ群共享(加群请简要描述使用场景 [实时水印]支持动态水印设置,完美支持文字水印、实时时间水印和图片水印; [透明度]可以设置透明度处理(设置遮盖); 对应Demo: 测试程序:SmartPublisherDemo.exe; ]Windows平台支持文字水印、png水印、实时遮挡,Android平台支持文字水印、png水印; [RTMP推送模式]支持RTMP推送 live|record模式设置(需服务器支持); [镜像] ]Windows平台支持文字水印、png水印、实时遮挡,Android平台支持文字水印、png水印; [复杂网络处理]支持断网重连等各种网络环境自动适配; [动态码率]支持根据网络情况自动调整推流码率
我们在此前的文章中介绍过关于EasyNVR在去年就已经实现了视频添加水印的功能。开启水印后,用户可自主上传水印图片,水印支持移动、修改图片大小等操作。感兴趣的用户可以翻阅我们往期的文章进行了解。 有用户提出需求,需要在平台分发的RTSP视频流中添加水印,并将添加水印后的RTSP流接入大华的NVR进行播放。因为用户使用的是定制版本,所以针对该用户的需求,我们在该定制版本上也增加了视频水印功能。 添加水印后的效果,如图所示:将分发的RTSP流地址放入大华的NVR里:如图所示,视频在大华NVR中显示在线,并可以正常播放。 作为性能稳定、功能丰富的视频监控平台,EasyNVR视频边缘计算网关可支持市面上大部分的RTSP/Onvif协议设备,并拥有视频转码、直播与分发、云端录像与回放等多种功能,基于这些强大的视频能力,EasyNVR
轻量级RTSP服务还是RTMP? 文字、图片水印需要而且建议支持,比如实时时间、学校或公司logo等。 //水印效果选择++++++++++ watermarkSelctor = (Spinner) findViewById(R.id.watermarkSelctor); watermarkSelctor.setEnabled (false); final String[] watermarks = new String[]{"图片水印", "全部水印", "文字水印", "不加水印"}; ArrayAdapter watermarkSelctor.setAdapter(adapterWatermark); watermarkSelctor.setSelection(3,true); watemarkType = 3; //默认不加水印
只要设备支持标准的RTSP/Onvif协议,都可以接入至EasyNVR进行直播、录像、检索与回放服务。 去年我们对EasyNVR等平台增加了水印功能,主要是为了方便用户上传专属水印图片防止自己的视频源被盗用、或用于展示和宣传自己的品牌。 近期我们接到反馈,用户现场使用EasyNVR添加水印后,非按需通道开启了15路,CPU就会占50%左右,而使用ffmpeg开启了15路,CPU则只会占15%左右。 使用的ffmpeg命令是: -rtsp_transport tcp -i rtsp://admin:a1234567@192.168.99.212:554/h264/ch1/main/av_stream out]"-f flv rtmp://127.0.0.1:3519/live/1 我们在排查中了解到,性能出现这么大的差距,是因为用户使用的命令中没有指定视频编码器,默认是使用flv1编码,码率很小,RTSP
在移动端音视频开发中,我们经常面临一个架构抉择:是追求极致的低延迟(如无人机图传、实时指挥),还是追求丰富的功能处理(如加水印、AI分析、画中画)? /RTMP 拉流、推流、录像及轻量级 RTSP 服务的全能终端。 (Transcoding Mode)当需要给视频加水印、跑马灯或者做画中画时,我们必须拿到 YUV 数据。 SDK 内部会负责将 Layer 0 (视频) 和 Layer X (水印) 进行硬件或软件混合。 既能满足无人机图传对 100-200ms 级低延迟的苛刻要求,也能满足安防行业对视频OSD 水印、AI 分析的业务刚需。
技术背景Android平台推流模块,添加文字或png水印,不是一件稀奇的事儿,常规的做法也非常多,本文,我们主要是以大牛直播SDK水印迭代,谈谈音视频行业的精进和工匠精神。 第一代:不可动态改变的文字、png水印2015年,我们在做Android平台RTMP推送模块和轻量级RTSP服务模块的时候,有这样的场景诉求,应急指挥、智慧巡检或安防类,都有文字或png水印的技术诉求, 随着Android平台GB28181设备接入模块的发布,基于GB28181设备接入模块,对水印提出来更高的要求,好多公司或开发者,需要实时更新水印内容(比如MobilePosition位置信息、实时时间 、作业内容等),为此,我们想到的是,这一版,我们需要实现动态水印能力。 以文字水印为例,我们的实现和设计如下,通过bitmap获取到文字水印数据,然后通过PostLayerImageRGBA8888ByteBuffer()接口投递到jni,这种设计,几乎已经满足了100%的技术诉求
只要设备支持标准的RTSP/Onvif协议,都可以接入至EasyNVR进行直播、录像、检索与回放服务。 去年我们对EasyNVR等平台增加了水印功能,主要是为了方便用户上传专属水印图片防止自己的视频源被盗用、或用于展示和宣传自己的品牌。 近期我们接到反馈,用户现场使用EasyNVR添加水印后,非按需通道开启了15路,CPU就会占50%左右,而使用ffmpeg开启了15路,CPU则只会占15%左右。 使用的ffmpeg命令是: -rtsp_transport tcp -i rtsp://admin:a1234567@192.168.99.212:554/h264/ch1/main/av_stream out]"-f flv rtmp://127.0.0.1:3519/live/1 我们在排查中了解到,性能出现这么大的差距,是因为用户使用的命令中没有指定视频编码器,默认是使用flv1编码,码率很小,RTSP
但是有些原始视频没有水印,但是平台端播放的时候又希望有水印,下面介绍下LiveNVR Onvif/RTSP流媒体服务器中如何给监控视频添加水印的。 2、摄像头OSD设置水印如果可以修改摄像头或者录像机视频源端的OSD水印的话,首先建议的就是用摄像头原始添加水印的方式, 这种方式对服务器端没有任何性能影响,水印数据也是直接编解码进视频数据里面去的,没法去掉 4、视频编解码打水印如果前2种方案都不能满足需求,还是需要从服务端将水印叠加进视频内容中的话,下面就介绍下LiveNVR Onvif/RTSP流媒体服务如何叠加文件或者图片水印。 如果需要叠加文字水印就输入draw_text="测试" ,还支持draw_text={name} 通配配置把通道名称叠加进水印; 如果需要叠加图片水印的话,需要先将图片上传到服务器上,再输入draw_image 文字字体大小注:1、如果文字水印和图片水印同时存在,draw_x/draw_y用于文字水印坐标,draw_image_x/draw_image_y用于图片水印坐标2、坐标还支持数学公式,这样就可以做到水印动态移动