分类: 在线工具

围绕 mazter.cn 在线工具箱的实用指南:图片压缩、格式转换、元数据清理的做法与取舍。

  • 为什么我把「去除他人水印」改成了「打码遮盖」

    做在线工具箱时,最初的清单里有一条”去除水印”。做之前重新评估了一遍,最后把它改成了另一个功能:打码遮盖(马赛克 / 模糊 / 纯色块)。

    这个改动不是因为技术难度,而是想清楚了一件事:这个功能的典型用法是什么。

    先说技术:真能”去掉”吗

    要把已经压进画面里的水印去掉,本质上是在做图像修复(inpainting)——让算法根据周围像素去”猜”水印下面原本是什么。

    结果取决于水印的位置和背景:

    • 水印压在纯色或规律背景上:修复效果不错,几乎看不出来。
    • 水印压在复杂纹理或人脸上:结果往往是一块模糊的斑,反而比留着水印更难看。
    • 半透明平铺水印:几乎不可能干净去除。

    所以”去水印”在技术上是个效果不稳定的功能。这一点本身就足以让人犹豫。

    真正的问题:谁在用,用来干什么

    一个诚实的问题是:用户搜索”去水印”,想去掉的是谁的水印?

    答案绝大多数是别人的——下载来的图片素材、别人的摄影作品、付费内容的预览图、视频平台的 logo。

    这就涉及两件事:

    1. 著作权:水印通常是署名和权利声明的载体。去掉它,等于抹掉权利人的身份标识,后续的使用行为就很难被认为是善意的。
    2. 技术措施:水印属于权利人采取的保护措施,提供专门绕过的工具,性质上接近”帮助侵权”。

    即便工具本身是中立的,一个以”去水印”为卖点的产品,实际吸引来的绝大部分流量都指向同一个用途。这时候”我只提供工具、不负责使用”的辩解是很苍白的。

    那自己的水印怎么办

    这里要分开看:如果图是你自己拍的、水印是你自己加的(比如相机自动加的日期水印、自己平台的导出水印),那处理掉完全没有问题——你是在处理自己的作品。

    问题是工具无法区分。用户上传一张图,工具不知道水印是谁加的。

    所以能做的选择只有两个:要么全做(承担上述风险),要么不做。没有”只服务正当用途”的第三条路。

    改成打码遮盖之后

    新功能做的是相反方向的事:往图上加东西,而不是从图上拿走东西

    它的正当用途非常明确,而且是我自己天天会遇到的:

    • 发快递单据前,把姓名、电话、地址盖掉。
    • 截图分享时,把聊天对象的头像和昵称盖掉。
    • 晒订单、晒票据时,把订单号和金额盖掉。
    • 发证件照片时,把证件号部分遮住。

    这些场景的共同点是:你遮盖的是自己的或他人托付给你的敏感信息,目的是减少泄露,而不是抹掉别人的权利声明。

    功能实现上有三种笔刷——马赛克(不可逆性最强)、高斯模糊(视觉上更自然)、纯色块(最彻底)。强度可调,支持批量处理。

    一个通用的判断方法

    这次评审给我留下一个可复用的检查:

    与其问”这个功能能不能做”,不如问”这个功能被最典型地用来做什么”。

    技术可行性是个客观问题,使用意图是个概率问题。当一个功能的技术门槛很低、而被滥用的概率很高时,不做它通常是对的。

    顺带一提,工具箱里这两个功能都跑在浏览器本地——图片不会上传到任何服务器。这解决不了”用途”的问题,但至少不额外增加”你的图被别人存了一份”的风险。

  • 一张照片能泄露多少信息:EXIF 里存了什么,怎么清

    随便拿一张手机拍的照片,它在记录画面的同时,还悄悄记录了一堆关于”这张照片是怎么产生的”的信息。这些信息叫做 EXIF(Exchangeable Image File Format)。

    EXIF 里到底有什么

    常见的字段可以分成四类:

    1. 时间:拍摄时间,精确到秒,有时还有时区。
    2. 设备:手机型号、相机机身、镜头型号、厂商。
    3. 参数:光圈、快门、ISO、焦距、是否开了闪光灯。
    4. 位置:GPS 经纬度,有时还有海拔和拍摄方向。

    前三类顶多算”透露生活习惯”,第四类是真正的隐私风险——经纬度可以精确到米级

    为什么这有风险

    关键在于:不同渠道对 EXIF 的处理完全不同。

    • 微信、微博、大部分社交平台:上传时会自动剥离 EXIF(至少剥离 GPS)。这是平台的保护。
    • 原图发送:通过微信”发送原图”、邮件附件、网盘分享、QQ 传文件,EXIF 完整保留。
    • 截图:截图一般不携带原图的 EXIF,但也因此失去了画面质量。

    也就是说,真正危险的不是”发朋友圈”,而是把原图直接发给别人。一张在家门口拍的照片发原图出去,等于告诉对方你的住址。

    还有一类容易被忽略的场景:二手交易时拍的商品照片、租房时拍的房间。画面里的窗外风景加上 GPS,足够定位到具体楼栋。

    怎么查看

    几个不用装软件的方法:

    • Windows:右键文件 → 属性 → 详细信息,往下翻能看到相机型号和 GPS。
    • macOS:预览 → 工具 → 显示检查器 → 信息标签页。
    • 在线查看:用工具箱的 EXIF 查看,直接把图拖进去就能看到全部字段,包括 GPS。

    怎么清除

    分两种需求:

    • 只删位置:保留拍摄参数。适合摄影爱好者分享作品——想让人看到用的什么器材和参数,但不想暴露拍摄地点。
    • 全部清除:所有 EXIF 字段一并抹掉,只留纯像素。适合要发给陌生人的图。

    要注意的一点是:“关掉相机定位”和”清除已有照片的 EXIF”是两件事。前者只对之后拍的生效,已经拍好的老照片,GPS 还在里面。

    清了 EXIF 就等于匿名了吗

    不是。这是最容易产生虚假安全感的地方。

    EXIF 只是元数据。画面本身包含的信息往往更多:门牌号、路牌、校服、工牌、窗外地标、背景里的电脑屏幕。清完 EXIF 之后,如果画面里能看出来你在哪,那清了也没用。

    所以正确的顺序是:先看画面的内容要不要处理,再决定要不要清 EXIF。如果画面里有敏感信息(快递单、证件、聊天记录),那需要的是打码遮盖,不是清 EXIF。

    一个实际的习惯

    我现在的做法是分场景处理:

    1. 要在社交平台发:直接发,平台会处理。
    2. 要发给陌生人或公开上传:先清 EXIF,必要时先打码。
    3. 要长期保存归档:保留原图和完整 EXIF,那是照片的一部分。

    工具箱里的 EXIF 处理同样在浏览器本地完成,GPS 字段默认折叠显示——毕竟查看自己的照片信息,本来就不需要经过任何人的服务器。

  • HEIC 是什么,iPhone 的照片为什么在电脑上打不开

    把 iPhone 拍的照片传到电脑上,双击打不开;想上传到某个系统,提示”不支持的格式”。这不是文件坏了,只是苹果从 2017 年开始换了一种存储格式。

    HEIC 到底是什么

    HEIC 是 HEIF(High Efficiency Image Format)格式的一种扩展名。它是视频编码标准 HEVC/H.265 的静态图像版本——既然 H.265 能用一半体积存下同样质量的视频,那么用同样的压缩技术存照片,自然也能小很多。

    实际效果大概是:同等画质下,HEIC 比 JPEG 小 40%–50%。对一台存了几千张照片、存储又很贵的手机来说,这个收益足够大,所以苹果从 iOS 11 起把它设成了默认。

    HEIC 还有几个 JPEG 做不到的能力:支持透明通道、支持连拍序列(Live Photo 的动态部分)、支持 16 位色深。

    为什么到处都打不开

    两个原因叠加:

    • 专利授权:HEVC 涉及多个专利池,授权体系复杂,很多厂商(尤其开源社区)出于法律风险不愿意内置支持。
    • 惯性:JPEG 诞生于 1992 年,三十多年下来几乎所有软件、所有系统、所有网站都认它。要替换的是一个生态,不只是一个格式。

    目前的情况是:macOS 原生支持,iOS 原生支持,Windows 需要装扩展,Android 新版本支持,而大量网站和内部系统只收 JPG/PNG。

    浏览器里就能解码,不用上传

    过去转换 HEIC 要么装软件,要么传到在线转换网站。后者的风险和压缩工具一样——你的照片要先去别人的服务器上转一圈。

    现在有另一条路:把 HEVC 解码器编译成 WebAssembly,直接在浏览器里跑。页面加载一次解码器(几 MB),之后所有转换都在本地内存完成,文件不出设备。

    技术上大致是这样:

    读取 File 对象 → 交给 WASM 解码器 → 得到原始像素 → 用 Canvas 重新编码为 JPG/PNG → 生成下载链接

    代价是首次加载要下载解码器,之后就很快了。相比”把照片传给陌生服务器”,这个代价完全可以接受。

    转换的代价:这是有损的

    需要先说清楚一件事:HEIC 转 JPG 必然损失质量,因为两者是不同的编码方式,不存在”无损转换”。

    实际影响有多大,取决于原图:

    • 普通照片、风景、人像:转完几乎看不出差别。
    • 高动态范围、暗部细节丰富的图:可能出现色带。
    • 如果要转成 JPG 再打印或放大,建议用高质量参数(85 以上)。

    所以正确的顺序是:先转,再压缩,而不是压完再转。每一步有损操作都该只做一次。

    什么情况下不要转

    • 只是要在 Mac 或 iPhone 之间传看——完全没必要,原生就能打开。
    • 要长期归档——保留 HEIC 原片,需要用时再转。转出来的 JPG 是”一次性成品”。
    • 对方系统明确支持 HEIC——多问一句能省一次转换。

    如果你现在就需要转,工具箱里的 格式转换可以处理 HEIC 输入,同样全程在浏览器本地完成。

  • 图片压缩怎么选:质量、体积与格式的取舍

    每次要传图都会遇到同一个问题:这张图太大了,得压一压。但压完之后要么还是很大,要么糊得没法看。问题通常出在把”压缩”当成一个单一旋钮,实际上它是三个各自独立的维度。

    三个维度,各管一段

    • 质量参数:决定编码器丢弃多少细节。影响的是”画面干不干净”,对体积的影响是渐进的。
    • 尺寸:像素数量。影响的是”能看多大”,对体积的影响是平方级的——长宽各减半,像素数变成四分之一。
    • 格式:编码方式。同样的画面,不同格式的体积可以差好几倍。

    一个常见误判是:图太大就使劲降质量。但如果这张图是 4000×3000 要放在宽 800 的网页里,先降尺寸带来的收益远大于降质量,而且画面反而更锐利(缩小本身会平滑掉噪点)。

    质量参数的甜点区

    对 JPEG 而言,经验值:

    • 85–90:几乎看不出差别,适合摄影作品、需要放大的图。
    • 75–85:肉眼很难分辨,是网页配图最常用的区间。
    • 60–70:开始能在平坦区域(天空、墙面)看到色块,适合缩略图。
    • 低于 60:明显劣化,除非极端场景否则不值得。

    值得注意的是,已经压缩过的图再压一次,收益很小而劣化很快。JPEG 是有损编码,每一次重新编码都会在前一次的损伤上再削一刀。如果这个图来自微信或微博,它已经被压过了,此时再压不如直接降尺寸。

    什么时候该换格式

    格式的选择其实是在问”我要兼容谁”:

    • JPEG:通用性最好,照片类的默认选择。不支持透明。
    • PNG:无损,适合截图、文字、线条图、需要透明的图。不适合照片——一张照片存成 PNG 可能是 JPEG 的五到十倍大。
    • WebP:同等画质下比 JPEG 小 25–35%,支持透明和动图。现代浏览器都支持,是目前网页的稳妥选择。
    • AVIF:比 WebP 再小一截,画质更好,但编码很慢,且部分旧环境不支持。

    一个实用的判断:如果你要发到微信、公众号、或者别人可能用老软件打开,就老实用 JPEG。如果是自己网站上用,WebP 是当下性价比最高的。

    “压到 200KB 以内”是怎么做到的

    很多场景给的是目标体积而不是质量参数——比如报名系统要求附件不超过 500KB。这时候手动试参数很痛苦。

    自动化的做法是二分查找:先按中等质量压一次,看结果比目标大还是小,然后据此收窄区间,重复几轮就能逼近目标。七八次迭代内基本能收敛,而每次编码在本地浏览器里通常只要几十毫秒。

    这个思路比”固定压到 70 质量”聪明的地方在于:一张纯色海报和一张满是细节的照片,达到同样体积所需的质量参数是完全不同的。

    哪些图不该压

    • 已经是 WebP/AVIF 且体积合理的图,再压收益极低。
    • 含文字的截图——压缩会让文字边缘出现振铃伪影,糊掉的代价远高于省下的几十 KB。这种情况应该存 PNG。
    • 需要二次编辑的原图。压缩是不可逆的,先压了再改就改不回来了。

    关于”上传到服务器压缩”

    市面上大多数在线压缩工具要求你把图片传到它们的服务器。对个人隐私照片、证件、合同这类内容,这本身就是个不该承担的风险。

    我的在线工具箱里的压缩功能全部在浏览器本地完成,文件不会离开你的设备——这也是它当初坚持纯前端实现的主要原因。想试试的话在 图片压缩,整个过程断网也能跑。