前言

最近看到小米 12S Utra 的发布,看了下详情页面,发现演示的照片都好看的,包含了品牌、设备、镜头、位置等信息,如下图所示:

作为一个摄影爱好者,也希望把自己的照片也输出这些信息。

但目前此类水印好像只在小米 12S Utra 的编辑器里有,没有其他途径。

于是就写了这个小工具。


水印工具

  • 地址:https://lecepin.github.io/gen-brand-photo-pictrue/
  • Github 仓库地址:https://github.com/lecepin/gen-brand-photo-pictrue


支持:

  • 自动读取照片 exif 数据,并自动填写到图片中,包括型号、品牌、焦距、光圈、快门、ISO、拍摄时间、GPS 信息。
  • 可手动编辑水印参数。
  • 目前支持 苹果、佳能、大疆、富士、华为、莱卡、小米、尼康、索尼 品牌。

实现

实现上比较容易,就是读取照片数据的前 4KB 数据,获取照片的基本信息,也就是 Exif 数据。

最近刚好在用 Rust,于就是就 Rust 写了 WebAssembly 进行 Exif 数据的读取,代码如下:

#[wasm_bindgen]
pub fn get_exif(raw: Vec<u8>) -> JsValue {let mut exif_data: Vec<ExifData> = Vec::new();let exifreader = exif::Reader::new();let mut bufreader = std::io::Cursor::new(raw.as_slice());let exif = exifreader.read_from_container(&mut bufreader).unwrap();for field in exif.fields() {if let Some(_) = field.tag.to_string().find("Tag(Exif") {continue;}if ["Make", "Model"].contains(&field.tag.to_string().as_str()) {exif_data.push(ExifData {tag: field.tag.to_string(),value: field.display_value().to_string().replace(|item: char| ["\"", ","].contains(&item.to_string().as_str()),"",).trim().to_string(),value_with_unit: field.display_value().with_unit(&exif).to_string().replace('"', ""),});continue;}exif_data.push(ExifData {tag: field.tag.to_string(),value: field.display_value().to_string(),value_with_unit: field.display_value().with_unit(&exif).to_string(),});}JsValue::from_serde(&exif_data).unwrap()
}

测试了一下用 Rust Exif 与 npm exif 的执行速度:

  • Rust WebAssembly:0.6ms
  • Npm exif 包:5.6ms

大约快 10倍左右,还是很夸张的。

其它示例

最后看下,使用这个工具生成的照片吧。

小米 12S Utra 莱卡水印生成在线工具相关推荐

  1. 在线生成ascii字符画,字符图案生成在线工具,springboot banner启动字符图设置

    文字生成字符图 http://patorjk.com/software/taag http://www.network-science.de/ascii/ 根据图像生成字符图 http://www.d ...

  2. 一个好用的基于若干静态图片生成gif图片的在线工具

    在线工具,无需安装,浏览器即可使用. 网址:http://www.atoolbox.net/ 添加想要生成gif的图片素材,支持批量上传: 延时的意思是,如果上传了三张图片A,B,C,前两张图片的延时 ...

  3. 在线图片水印平铺工具

    在线图片水印平铺工具 在线图片水印平铺工具 本工具可以为图片添加自定义的平铺文本水印,可以用于给证件添加水印,隐私图片添加水印等,方便快捷,工具仅支持较新的浏览器版本. 工具为纯客户端处理,数据将不会 ...

  4. 基于新浪微博API生成短链接的几款在线工具

    需求背景 很多人在营销推广中都要使用到短链接,新浪短链接则是大家最先接触到的,服务也很稳定,所以需求量也很大.据不完全统计,大概每天有几十亿条t.cn短链接生成.如此巨大的数量,难道都是先登录新浪微博 ...

  5. 自媒体必备工具:免费的音文对齐生成SRT字幕,快速打轴匹配声音及文字的在线工具

    对一个自媒体来说,制作字幕是一件非常令人头疼的问题.当然,网易见外工作台是一个很好的工具,可以免费进行语音识别生成字幕. 但是问题也来了,有时候由于普通话不标准,或者语速过快,导致出现很多的错别字的情 ...

  6. JavaScript实现在线生成高强度随机密码工具-toolfk程序员在线工具网

    2019独角兽企业重金招聘Python工程师标准>>> 本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装 ...

  7. 推荐 | GIF转换工具(无水印)|在线视频转gif网站

    推荐 | GIF转换工具(无水印)|在线视频转gif网站 https://convertio.co/zh/video-converter/ 个人推荐这个,还可以安装 谷歌插件,最好还是挂着VPN等,不 ...

  8. carbon- 一个能生成漂亮的代码分享图的在线工具

    本篇转载自https://juejin.im/post/5a82c27f5188257a76632cc0 carbon是一个在线工具,它负责生成更加漂亮不同风格的代码图片,绝对比截图工具更加搞逼格. ...

  9. 白嫖我常用的 11 个超火的前端必备在线工具,终于有时间上班摸鱼了

    大家好,我是你们的 猫哥,一个不喜欢吃鱼.又不喜欢喵 的超级猫 ~ 前言 猫哥是一个常年混迹在 GitHub 上的猫星人,所以发现了不少好的前端开源项目,在此分享给大家. 公众号:前端GitHub,专 ...

  10. Steve:AI创建视频和动画的在线工具

    [产品介绍] steve.ai是一款利用人工智能技术创建视频和动画的在线工具,可以让任何人在几分钟内把文字转换成吸引人的视频.核心功能是根据用户输入的文本,自动选择合适的素材.音乐.字幕和动效,生成高 ...

最新文章

  1. numpy list df tensor的相互转换
  2. 关于jinja2的{{...|safe}}过滤器
  3. 苹果手机mov文件如何复制到电脑_如何在手机上访问电脑上的文件(超详细步骤) iPhone版...
  4. 函数的基本知识,定义,调用,参数,返回值,说明文档,函数的嵌套及应用
  5. ubuntu使用python opencv_Ubuntu中“利用Opencv + python进行特征匹配”的环境搭建
  6. 【职业发展记录-05】地图服务发布-几种方式
  7. WDK10+VS2015 驱动环境搭建
  8. matlab水蒸气焓值计算_暖通干货,巧析焓湿图,焓湿图如何应用?一读就懂不容错过...
  9. 电子科大《模拟集成电路分析与设计》(罗萍)2020期末考试重难点整理
  10. SketchUp Pro 2019下载|SketchUp Pro 2019(草图大师)免安装绿色精简版下载
  11. [bzoj3481]dzy loves math III 解题报告
  12. junos pulse_IT怪胎:如何使用DHCP中继(JUNOS)
  13. repaire mysql_mysql检查数据表和修复数据表
  14. 阿越-临江仙:见《十字-声名雀起》
  15. PaddleHub一键视频动漫化
  16. 人工智能在教育方面应用的思考(一)
  17. IOS积分墙:末落贵族与新兴势力PK
  18. 计算机毕业设计,这6个网站早知道,太牛了
  19. 【IT-Windows】某些设置由你的组织来管理
  20. 优先级反转的经典案例——火星拓荒者

热门文章

  1. TeamViewer远程访问打开软件黑屏
  2. 20种在学习编程的同时也可以在线赚钱的方法
  3. CAD绘图的基本步骤和重点
  4. LODOP打印分页出现空白页
  5. 肿瘤信息学中一些专业词汇整理(不断更新ing)
  6. S60 Python 编程指南——如何创建pys60应用程序
  7. IOS calculater
  8. thon中的全局变量
  9. 谷歌浏览器网页截屏插件工具下载与安装——FireShot
  10. Chrome插件 - FireShot捕捉网页截图(可截取完整页面)