文件图片 本地计算 开箱即用 内置示例 不留痕迹

图片马赛克

上传照片后调整马赛克块大小,整图像素化或仅对中心椭圆区域打码:块越大越模糊,处理按「缩小再放大」方式在浏览器本地合成,完成后直接下载,图片不会上传到任何服务器。

发图前打码是刚需:车牌照、人脸、快递单号、屏幕上的账号信息,都只需要糊掉一小块而不是整张图。市面工具常在这时要求你登录、看广告,甚至把原图传到服务器——打码的初衷是保护隐私,上传反而先泄露了一道。

本工具的马赛克在浏览器里就地合成:按「先把图缩小到块级分辨率、再用像素化放大」的经典算法糊掉细节,块大小 2~64px 可调。只想糊中心的(人脸、证件号通常在中间)选「仅中心椭圆区域」,四周保持清晰,观感自然。

使用步骤

  1. 选一张照片,或直接用内置示例图试手感。
  2. 调马赛克块大小:8px 轻度遮蔽、16px 常规、24px 以上几乎不可辨认。
  3. 选打码范围:整图或仅中心椭圆区域。
  4. 点「下载马赛克图片」,得到打码后的 PNG。

计算原理与示例

马赛克块大小怎么选

块大小决定模糊程度:8px 像素化后文字仍可辨认轮廓,适合轻度遮蔽背景;16px 是常规打码,人脸与文字都不可辨;24px 以上连图案形状都消失。遮挡车牌照、证件号建议 16px 起步。

中心椭圆的范围是多大

中心椭圆以图片中心为圆心,半轴约为宽高的 35%——480×320 的图覆盖中央 336×224 的椭圆区域。人脸、证件主信息多落在这个范围;不在此范围的目标(角落的车牌)用整图模式,或先裁剪再打码。

打码后还能还原吗

像素化是不可逆的有损操作:原始像素被合并成块级平均色,细节已被丢弃,正规算法无法还原。但小块(2~4px)理论上可被 AI 超分辨率工具「猜」出部分轮廓——涉及敏感信息时请用 16px 以上的块。

图片会传到服务器吗

不会。处理全程在你的浏览器里完成:解码、像素化、导出都在本机内存中进行,页面没有任何上传代码;断网状态下功能完全一致。这是「隐私工具不上传」的底线。

代码示例

JavaScript 像素化网格:向上取整铺满

const cols = Math.ceil(w / b);
const rows = Math.ceil(h / b);   // 800×600、块 40 → 20×15 = 300 块

// 每块取块内像素均值填充,整块同色即马赛克
// 块越大越模糊:块 2 只是轻微颗粒感,块 128 已经认不出原图

JavaScript 中心椭圆:只打码椭圆内的块

// 椭圆中心 = 图中心,半轴 = 35% 边长
const rx = w * 0.35, ry = h * 0.35;

// 块中心落在椭圆内才打码(标准椭圆方程)
const px = (c + 0.5) * b, py = (r + 0.5) * b;
const inside = ((px - cx) / rx) ** 2 + ((py - cy) / ry) ** 2 <= 1;

常见问题

打码后的图片是什么格式?

PNG。它无损记录像素化后的画面,不会像 JPEG 那样在色块边缘补出噪点;文件体积按图片尺寸与内容复杂度变化。

能只糊掉图片里的一小块矩形吗?

当前版本提供整图与中心椭圆两种范围。要糊任意矩形,可以先用图片裁剪工具把目标区域单独导出打码,再拼回原图;椭圆模式覆盖了最常见的「糊中间」场景。

为什么块大小调到最小看起来没变化?

2px 的像素化相当于把图缩到一半再放大,视觉上接近轻微柔化。它用于「保留观感、丢掉精确像素」的场景;要明显打码请用 12px 以上。

支持动图(GIF)吗?

不支持。像素化只处理静态首帧并输出 PNG,动图请逐帧处理或使用视频编辑工具。

打码会保留 EXIF 拍摄信息吗?

会丢失——canvas 重新合成的 PNG 不含原始 EXIF。若你的目的是同时抹掉拍摄位置等元数据,这反而是顺带的好处;需要保留 EXIF 的请先备份原图。

一次能处理多大尺寸的图?

常规手机照片(几千万像素)没有压力,处理在毫秒级完成;超长截图(万级像素高)受浏览器画布上限约束,建议先缩放再打码。

打码和模糊有什么区别?

马赛克把区域切成色块、彻底丢弃块内细节;高斯模糊是加权平均、边缘仍保留梯度信息,理论上更易被反推。遮敏感信息优先马赛克——这也是新闻打码的主流做法。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。