图片抖动
用 Floyd-Steinberg 误差扩散将照片量化为复古抖动图案——100% 在浏览器中完成。
源文件
将图片拖到此处
或点击选择文件
选项
什么是图片抖动?
抖动是一种用于在只能再现少量固定颜色的设备上显示连续色调图像的技术。它并不简单地把每个像素四舍五入到最近的可用色阶——那样会产生生硬的色带并丢失细节——而是将舍入误差分散到相邻像素。结果是一层由明暗点组成的细密散布图案,从正常距离观看时,眼睛会将其混合回平滑的渐变。经典应用场景是把灰度照片转换为纯黑白用于报纸印刷,但同样的原理适用于任何小调色板。
本工具完全在浏览器中应用最流行的抖动算法——Floyd-Steinberg。您上传图片,选择所需的灰度级数(2、4、8 或 16),工具会通过 Canvas API 读取原始像素缓冲区,将图片转为亮度,再按扫描顺序遍历每个像素,将其量化到最近的色阶,并把差值扩散到相邻像素。所有过程不会上传任何内容,结果几乎瞬时生成。
Floyd-Steinberg 滤镜的工作原理
本工具底层使用 Canvas 2D API。源图像被绘制到离屏画布上,随后 getImageData 返回原始像素缓冲区。图像首先使用标准 0.299·R + 0.587·G + 0.114·B 加权转换为灰度亮度缓冲区。然后算法按扫描线顺序遍历缓冲区。对每个像素,它找到最近的允许色阶——计算为 round(亮度 / step) × step,其中 step = 255 / (级数 − 1)——并用该值替换像素。
关键步骤在于如何处理新旧值之间的差值,即量化误差。Floyd-Steinberg 使用固定卷积核将此误差分配到四个尚未处理的相邻像素:右方 7/16、左下 3/16、正下 5/16、右下 1/16。通过将误差向前传递,算法保留了每个区域的平均亮度,这正是 2 级图像仍能看起来像平滑照片而非高对比度印章的原因。颜色数量选择器设置灰度级数:2 给出纯黑白和最强的复古感,而 16 保留了足够的色阶,使抖动几乎不可见。
抖动与其他量化效果的对比
抖动与多种减少调色板的效果相关但有所区别。色调分离(Posterize)同样减少色阶数量,但它只是独立地舍入每个像素,在一种色阶跳到下一种时会产生可见色带。抖动将这些色带打散为眼睛可平均化的细噪点。半色调(Halftone)在规则网格上使用不同大小的圆点来模拟色调,唤起印刷油墨的感觉;而抖动则散布单个像素,产生更精细、更数字化的纹理。阈值(Threshold)转换为硬黑白且无误差扩散,因此高于固定截断值的变为白,低于的变为黑——适合线稿,但会丢弃所有渐变信息。
Floyd-Steinberg 抖动的标志是其散布的噪点图案:暗区主要由黑像素填充,亮区主要由白像素填充,中间调则得到均匀的斑点以模拟灰色。这使它成为您希望小调色板保留尽可能多摄影细节时的正确选择。
何时使用抖动
抖动是一种横跨技术与风格用途的多功能效果。常见场景包括:
- 复古与像素艺术。2 级抖动照片瞬间唤起早期家用电脑、Game Boy 屏幕或 1 位报纸印刷的感觉。
- 在限色设备上印刷。当打印机或绘图仪只能铺设黑色油墨时,抖动可让您忠实地再现灰度照片。
- 电子墨水与低位深显示屏。电子阅读器等设备受益于抖动,可平滑原本会在 2 或 4 级屏幕上出现色带的渐变。
- 风格化图形。使用 4 或 8 级获得粗粝的漫画黑色风格,同时保留比纯黑白更多的细节。
- 减小文件体积。2 级抖动图像作为 PNG 压缩效果极佳,非常适合必须保持小巧的图标、蒙版或纹理。
每当您需要小调色板承载摄影图像,或想要刻意营造复古纹理时,抖动是最快的途径。
如何为图片应用抖动
抖动图片只需几秒,全部在浏览器中本地完成——无需上传、无需注册、无水印。请按以下步骤操作:
- 上传图片。点击上传区或将 JPG、PNG、WebP、GIF 或 BMP 文件拖入。图片会立即解码并预览。
- 选择颜色数量。选择 2 获得纯黑白,4 或 8 获得风格化外观,或 16 获得接近原始的细腻结果。
- 选择输出格式。选择 PNG 获得无损质量(最适合 2 级图像)、JPG 获得更小照片体积、或 WebP 兼顾大小与质量。
- 点击"应用抖动"。工具会处理图片,并并排显示原始与结果文件大小。
- 下载结果。点击"下载抖动图片"保存文件。原文件绝不会被修改。
由于每一步都通过 JavaScript 本地执行,您的图片绝不会被发送到服务器。这使得工具完全私密、快速,并适合处理敏感内容。
这个抖动工具免费吗?
完全免费,无需注册、无水印、无限制。
应该使用多少颜色数量?
使用 2 获得最强的复古 1 位外观。尝试 4 或 8 在保持风格化的同时获得更多细节,或 16 获得接近原始的细腻结果。
这个工具使用哪种抖动算法?
Floyd-Steinberg 误差扩散,最常见的抖动算法。它将每个像素的量化误差扩散到其右方、左下、正下和右下的相邻像素。
我的图片会被上传吗?
不会。所有处理都在本地完成。您的图片不会离开浏览器。