介绍
Picseal是一个开源项目,旨在生成类似小米照片风格的莱卡水印照片。它支持多种设备水印生成,包括佳能、尼康、苹果等,并提供在线演示和多种部署方法。项目使用Rust库提取EXIF信息,并通过WASM技术、HTML、CSS和JavaScript实现水印生成和图片导出。
演示地址
开源地址
https://github.com/zhiweio/picseal
图片
技术实现
EXIF 解析
使用了 Rust 库 kamadak-exif 从图片中提取得到 EXIF 信息并借助 WASM 技术嵌入前端 JavaScript 使用。
水印生成
通过 HTML 和 CSS 生成水印样式,能够做到动态调整实时预览。
图片生成
导出的图片是通过 dom-to-image JavaScript 库来将 DOM 转 JPEG/PNG 等格式图片,请注意这种实现生成的是和原图完全不一样的图片,可以看作屏幕截图的方式。
目前针对 JPEG 格式图片新增了复制原图 EXIF 信息嵌进导出的图片中,目前的实现方式比较简单粗暴,直接从原图二进制数据提取 EXIF 部分的数据,再同样以二进制格式进行拼接,不能确保稳定。
改进
改用 Rust little_exif 库来实现对图片 EXIF 信息的读取和编辑。
改用 Canvas 来实现水印,支持高度自定义。
部署方法
Docker
拉取镜像
docker pull zhiweio/picseal:latest
启动容器
docker run -d -p 8080:80 picseal
这一切,似未曾拥有