开源一个打水印的 APP,以防照片被小人泄露、利用

2020-09-02 16:06:19 +08:00
 rosu

多年来,我一直保持着对敏感证件复印件签注的习惯。最常用的文案就是:

仅供 xx 作 xx 之用,他用无效

尽管现在部分业务办理时,更多地要求生物识别而非静态的复印件或照片,但是许多基础的实名途径,依然只会要求身份证照片 /复印件(有利有弊)。这难免导致自己身份证照片 /复印件被他人冒用的情况发生,进而产生不必要的麻烦。

资料加签注,有什么好处?

个人能想到的两点:

  1. 收窄使用途径,降低文件价值

    • 设想下,如果盗用者使用你标注有如下水印的照片:

    本照片仅供阿里云实名认证只用,他用无效

    去提交腾讯云的实名认证,那必定是无法通过人工审核的。

  2. 滥用免责

    • 如果你的照片被他人盗用实名,上面标注有其他用途的水印,那么你是可以免责的。

数字照片加水印,麻烦吗?

实不相瞒,有点麻烦。在 Windows 上,我是用的是远古但易用的画图程序。

画图毕竟是用来画画的,打水印还是显得力不从心:

至今我也没有在 Windows 上找到好用的水印软件。

那么手机上有吗?我所知道的,iOS 上的效率控里面就有水印功能,后来我还发现有些「捷径」利用前端代码实现了打水印的功能,也非常方便。

可是我用的是 Android 啊! 而 Android 端目前还没有找到相关的 APP 。

不过微信小程序上倒是非常多这类的水印小程序。

只是,我对这些应用有一些担忧。最主要的还是隐私的二次泄露问题。我自己不放心把身份证、手持身份证这类照片上传或者提交给这些应用编辑。虽说有些小人之心,但是凡是涉及隐私的我们都该慎重。

我一直在寻找一款不强求开源,但至少是能离线使用的水印程序。

如何简单地打水印

故事的结尾是我并没有找到🤣,所以一怒之下自己写了一款 APP 。就叫简单水印

我按照自己的要求完成了她,所以她至少是符合:

所以安全性上你无须担心。那么功能性上如何呢?

我当时就念了一首诗👓

废话少说,先看东西

布局

当前简单水印支持对横竖间隙进行调整:

样式

样式可以调节字体颜色和旋转角度:

内容

内容支持图片水印,你可以加上自己的 logo,或者表情包:

那么输出的效果如何呢?

文字水印输出效果

图片水印输出效果

对图像的编辑都是基于原图进行编辑,不会进行压缩。但是在我的测试中也发现了,在内存不足的手机上无法完全载入原图(测试证实,连微信无法进行原图图像编辑)。针对此种情况,我们也引入了压缩机制,使用 zetbaitsu/Compressor 对原图进行压缩,在肉眼无差别的情况下,缩小照片的体积,以便编辑。

那么,哪里才可以买到呢?

那么这么好(🤭)的应用,究竟要多少钱呢???

代码都是开源的,当然不收钱你也可以使用啦!

目前由开发者主导的渠道有:

Android 限定,iOS 目前还没有。嘻嘻

后记

在完成了这个 APP 的编写工作后,我突然意识到这个 APP 其实受众可能并不多。因为很多人根本不在意”这点隐私“。

对别人来说,可能最终都是一个自娱自乐的玩具。但对我而言,这是我对个人隐私保护的一点努力,以及对泄露和滥用者的小小抵抗。

希望此能抛砖引玉,让更多开发者关注隐私和安全相关的需求,开发出更多降低保护隐私门槛的工具。

注:如果你喜欢这个项目的话,欢迎提交反馈或贡献代码,或者去点个 star 也是一个支持!谢谢 🙇‍ ~

7336 次点击
所在节点    分享创造
34 条回复
darmau
2020-09-02 16:07:40 +08:00
我觉得更需要一种打隐形水印的产品
rosu
2020-09-02 16:10:01 +08:00
@darmau 隐形水印无法防止被泄露后被重新利用的问题。因为是隐形的,不影响实名或者其他用途。
alan0liang
2020-09-02 16:23:28 +08:00
出了个 bug,导出图片会崩溃,Crash in main: java.lang.NullPointerException: uriString
at f.a.z1.a$a.run(:48)
机器:Redmi 7A,MIUI 11.0.6,stack trace 已发邮件
ffLoveJava
2020-09-02 16:48:23 +08:00
能把核心方法抽出出一个 Java 版的吗?
rosu
2020-09-02 17:16:54 +08:00
@ffLoveJava 抽出来应该没问题,但是可能会用 Kotlin 来写。Java...没有 Kotlin 香😝
ffLoveJava
2020-09-02 17:29:32 +08:00
@rosu 那也好, 建议把处理水印、图片的核心方法单独抽出来, 与 UI 分离
Whalko
2020-09-02 17:31:31 +08:00
感谢 lz,先送个 star
grazie
2020-09-02 21:31:10 +08:00
F-droid 出镜率在 V2 真的是少之又少
给 star 了
pzimao2018
2020-09-02 22:09:27 +08:00
保存的图像很大,原图 6mb,处理后 40+mb
rosu
2020-09-02 22:33:36 +08:00
@pzimao2018 应该是你的图片尺寸比较大。是不是 5k+ 的尺寸?🤔

因为打水印的时候需要全图都打上,加上输出的时候没有特别压缩质量。没想到体积增加如此恐怖...不过你可以后期自己再压缩 🤭。

这块我会再看看能不能调整一下。
pzimao2018
2020-09-02 22:47:27 +08:00
@rosu 我刚才看错了。准确的是 5792*4344 的原图,大小是 15.9mb ,处理后 43mb 。
q9OxQg
2020-09-03 05:08:51 +08:00
看见 Google Play 和 F-Droid,作者算是认真了。
0312birdzhang
2020-09-03 08:01:49 +08:00
不错,已 star
laoyur
2020-09-03 08:55:24 +08:00
已 star,建议加个透明度调节吧,算是标配了
rosu
2020-09-03 09:51:03 +08:00
@laoyur 透明度是有的,图片区域左边,上下滑可以控制透明度哈。
haoxuexiaoyao
2020-09-03 10:11:53 +08:00
建议增加一个透明度调节,非常使用,数字水印可以加上么,不一定是身份证等敏感信息需要水印,比如自己拍摄的部分图片就适合数字隐藏水印 @rosu 另外透明度调整确实按照说的操作不行
haoxuexiaoyao
2020-09-03 10:12:40 +08:00
类似这样的数字盲水印可以加入到你的 APP 里面建议 https://github.com/guofei9987/blind_watermark
laoyur
2020-09-03 10:29:49 +08:00
@rosu 嗯,亲测有效,就是隐蔽了
还有个问题,操作面板就别做响应左右拖动了,因为会跟滑块的拖动混起来,有时拖动滑块的时候稍微没按准,就变成拖动面板了,滑块的响应区域可以放大一些
zjie
2020-09-03 17:50:57 +08:00
真的非常棒,一直有这个需求,但是没时间搞。
rosu
2020-09-04 01:28:37 +08:00
@haoxuexiaoyao @laoyur 新版已经更新,透明度调节加上了!欢迎使用~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/703566

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX