LabVIEW VISION图像添加含透明通道PNG水印并且水印透明度可调实现方法
在下面的帖子中,我们实现了不包含透明通道的图像添加水印的方法:LabVIEW VISION图像添加水印并且透明度可调实现方法
http://visionbbs.com/thread-21485-1-1.html
但是这个帖子有一个未实现的功能,就是如果水印是带有透明通道的PNG图像时,则无法实现。输出的水印透明位置将显示为黑色,这样将会给透明水印显示造成非常大的改变,特别是一些黑色的水印,透明部分有效时,只会显示黑色的水印。在这里经过一段时间的研究,将此问题彻底解决:
本帖实现了透明PNG水印的添加。本实现方法因为使用了NI VISION进行一些处理,而VISION时的函数,不支持透明通道A的读取保存,所以这里背景图像,不支持带透明通道的PNG图像。当然,如果非要使用透明通道的PNG图像,也可以使用本贴中的某些实现功能对此类PNG图像进行一定的处理,如将透明转换为白色之类的。在这里,就不做处理了。
下面来看一些效果:
从上面的效果图中看到,背景图像可以为JPG、PNG、BMP等类型。水印图像也可以为JPG、PNG、BMP类型,水印的PNG类型,可以是包含透明通道的,也可以是不包含透明通道的。如包含透明通道,使用T透明色来显示,那么在Image显示控件中,则会表现为黑色(如上图所示)。而如果使用其它颜色来替换,则使用指定颜色来替换透明色。
而如果使用含透明通道的背景图,则会如上图所示,部分内容会显示不正常。因为背景没有做透明的处理。
附件中,还包含了一些研究中NG的代码,仅供参考,如里面还有一些因为水印分辨率过低,而做了一些增强(抗锯齿)等。
原始文档使用LabVIEW2020 32位中文版+NI VISION 2020实现。另存为的早期版本2017/2015/2013/2011未经验证,也许有兼容性问题,且另存为的水印的深浅系数有异常,未做调整,只有2020版的有调整该系数。
本示例仅展示了叠加效果,使用的是Overlay Bitmap功能,因此如果保存叠加后的图像,水印是作为覆盖信息保存的,而不直接显示。如果要保存带水印的图像,需要merge overlay合并覆盖之后再保存。
页:
[1]