结论
谢大佬邀请,结论大佬也说了, 其实就是不是最好的选择,而且也没必要。
就颜色而言,在计算机的RGB色彩空间中,(255,255,255)到(0,0,0)表示纯黑到纯白,手机的深色模式一般都是白字黑底, 直觉来看,纯黑肯定看着更清晰,但是显著的问题就是纯黑和纯白两个极端在一起对比太强,直接感受就是不舒服,字刺眼睛。因为二者对比度实在太高,所以灰黑色是一个中庸的选择,不必过于极端。
一个小实验
对这个问题,可以做一个小实验,我生成一批图片(256张,覆盖纯黑到纯白所有灰度的背景),字体不变,背景纯黑到纯白,生成一张动图,大家可以感受一下其中的不一样。
准备看动图,建议在黑暗环境中观看更具效果。
很明显,纯黑的观感不是太舒服,个人觉得刺眼且不柔和。而中间的的颜色,看起来整体舒服不少。
纯黑色(255,255,255)
不那么黑的(194,194,194)
再浅一点的(155,155,155)
总结
简单来说,为了美观和观感舒适,强对比度是不合适的,手机屏幕离眼睛很近,且深色模式本就是夜间使用,屏幕内容的对比度太高对眼睛不好,也影响使用。不是纯黑而是灰黑自然也是厂商和用户双方共同希望的结果。
测试代码开源
放个代码,感兴趣的自己去尝试一下吧,不局限于探讨深色模式,有其他颜色对比的可以酌情更改测试。
import cv2,os
import numpy as np
import imageio
width = 1080
height = 1080
duration = 0.5
# 创建一个文件夹来保存图像
if not os.path.exists('images'):
os.makedirs('images')
frames = []
# 从白色到黑色的颜色范围
for i in range(256):
# 创建一个图像
img = np.ones((height, width, 3), dtype=np.uint8) * i
# 添加白色的文字
cv2.putText(img, 'Screen Test', (width//2 - 200, height//2), cv2.FONT_HERSHEY_SIMPLEX, 2, (255, 255, 255), 5)
# 保存图像
cv2.imwrite(f'images/img{i}.png', img)
frames.append(f'images/img{i}.png')
# 创建动画
with imageio.get_writer('screen_test.gif', mode='I', duration=duration) as writer:
for filename in frames:
image = imageio.imread(filename)
writer.append_data(image)