You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确使用Pillow库的Dithering抖动功能

Pillow 图像抖动(Dithering)功能调用方法

代码错误点

当前传参有误:Image.Dither是Pillow内置的抖动模式枚举类,不能直接作为参数值传入,必须指定枚举下的具体常量。

注意:dither参数仅在转换为低色深模式时生效,比如1位黑白模式("1")、256色调色板模式("P")。转"L"8位灰度模式时本身支持256级灰阶,不需要抖动处理,传入dither参数不会生效。

可选抖动模式

  • Image.Dither.NONE:关闭抖动,颜色转换时直接匹配最近色
  • Image.Dither.FLOYDSTEINBERG:使用Floyd-Steinberg误差扩散抖动算法,低色深下视觉还原度更好,是官方标准抖动实现

修正后参考代码

import os
from PIL import Image

ORIGIN_PATH = "/home/prajakta/Tasks/Evaluate detection model on scanned customer documents/scanned_docs/"

for filename in os.listdir(ORIGIN_PATH):
    # 用os.path.join拼接路径,避免不同系统下路径分隔符兼容问题
    file_full_path = os.path.join(ORIGIN_PATH, filename)
    img = Image.open(file_full_path)
    
    # 转8位灰度图无需传dither参数
    # gray_img = img.convert("L")
    
    # 转1位黑白图,开启Floyd-Steinberg抖动
    dither_img = img.convert("1", dither=Image.Dither.FLOYDSTEINBERG)
    
    # 转256色调色板图,关闭抖动
    # p_img = img.convert("P", dither=Image.Dither.NONE)
    
    dither_img.show()

低版本兼容说明

如果使用的Pillow版本低于9.1.0,不支持Image.Dither枚举写法,可以替换为旧版全局常量,效果完全一致:

  • 开启Floyd-Steinberg抖动:传参dither=Image.FLOYDSTEINBERG
  • 关闭抖动:传参dither=Image.NONE

内容的提问来源于stack exchange,提问作者aarya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 11:12:05