如何制作在不同背景下显示不同内容的图片
大约 2 分钟
如何制作在不同背景下显示不同内容的图片
有时我们希望一张图片在浅色背景和深色背景下显示不同内容。可以通过像素级处理,将一张输入图片转换为在不同背景下显示不同内容的 PNG。
实现原理
- 通过分析每个像素的亮度,将图片分为“亮色部分”和“暗色部分”。
- 亮色像素处理为半透明白色,适合深色背景下突出显示。
- 暗色像素处理为半透明黑色,适合浅色背景下突出显示。
- 这样一张图片在不同背景下会呈现不同的视觉效果。
- 该方法本质上利用了 PNG 的透明通道和人眼对亮度的感知差异。
Python 实现代码
下面的代码以 Pillow 为例,输入一张图片 input.png
,输出一张适合不同背景的图片 output.png
。思路是:
- 将图片分为亮色和暗色部分,分别调整透明度。
- 亮色内容在深色背景下突出,暗色内容在浅色背景下突出。
from PIL import Image
def make_diff_bg_img(input_path, output_path, threshold=128):
"""
输入一张图片,将其处理为在不同背景下显示不同内容的PNG。
亮色像素变为半透明白色,适合深色背景;
暗色像素变为半透明黑色,适合浅色背景。
"""
img = Image.open(input_path).convert('RGBA')
w, h = img.size
pixels = img.load()
for y in range(h):
for x in range(w):
r, g, b, a = pixels[x, y]
gray = int(0.299*r + 0.587*g + 0.114*b)
if gray > threshold:
# 亮色像素,变为半透明白色
pixels[x, y] = (255, 255, 255, int(a*0.7))
else:
# 暗色像素,变为半透明黑色
pixels[x, y] = (0, 0, 0, int(a*0.7))
img.save(output_path)
# 用法示例
make_diff_bg_img('input.png', 'output.png')
input.png
为原始图片,output.png
为处理后图片。- 可根据实际需求调整
threshold
和透明度比例。