Android中如何仅对图片非白色区域(文字/Logo)设置滤镜?
实现仅将非白色区域转为灰色的方法
方案1:Photoshop 批量处理(适合非编程用户)
- 打开单张目标图片,选择选择 > 色彩范围,用吸管点击白色背景,调整「颜色容差」确保所有白色区域被选中(可通过预览确认),点击确定。
- 按下
Ctrl+Shift+I反选,选中文字和Logo所在的非白色区域。 - 执行图像 > 调整 > 去色(快捷键
Shift+Ctrl+U),此时选中区域会转为灰色,白色背景保持原样。 - 批量处理:打开窗口 > 动作,新建动作并录制上述操作,随后通过文件 > 自动 > 批处理选择该动作,即可批量处理所有图片。
方案2:Python 脚本批量处理(适合编程用户)
用Pillow库可以精准实现你想要的逻辑,代码如下:
from PIL import Image import os def convert_non_white_to_gray(input_dir, output_dir): # 创建输出目录 if not os.path.exists(output_dir): os.makedirs(output_dir) # 遍历输入目录下的图片文件 for filename in os.listdir(input_dir): if filename.lower().endswith(('.png', '.jpg', '.jpeg')): img_path = os.path.join(input_dir, filename) img = Image.open(img_path).convert("RGBA") pixels = img.load() width, height = img.size for x in range(width): for y in range(height): r, g, b, a = pixels[x, y] # 判断是否为白色(可根据实际背景调整阈值,适配非纯白的情况) if not (r > 245 and g > 245 and b > 245): # 用标准灰度公式计算灰度值 gray = int(0.299 * r + 0.587 * g + 0.114 * b) pixels[x, y] = (gray, gray, gray, a) # 保存处理后的图片 output_path = os.path.join(output_dir, filename) img.save(output_path) # 替换为你的输入、输出目录路径 convert_non_white_to_gray("input_images", "output_images")
- 注意:如果图片背景不是绝对纯白,可调整判断条件中的阈值(比如把245改成240),适配不同的白色背景。
- 运行前需安装Pillow库:执行
pip install pillow
内容的提问来源于stack exchange,提问作者Nattakul
相关产品推荐
相关产品推荐

