当前位置: 华文问答 > 数码

手机深色模式为什么不是纯黑,而是黑灰色?

2024-01-17数码

结论

谢大佬邀请,结论大佬也说了, 其实就是不是最好的选择,而且也没必要。

就颜色而言,在计算机的RGB色彩空间中,(255,255,255)到(0,0,0)表示纯黑到纯白,手机的深色模式一般都是白字黑底, 直觉来看,纯黑肯定看着更清晰,但是显著的问题就是纯黑和纯白两个极端在一起对比太强,直接感受就是不舒服,字刺眼睛。因为二者对比度实在太高,所以灰黑色是一个中庸的选择,不必过于极端。

一个小实验

对这个问题,可以做一个小实验,我生成一批图片(256张,覆盖纯黑到纯白所有灰度的背景),字体不变,背景纯黑到纯白,生成一张动图,大家可以感受一下其中的不一样。

准备看动图,建议在黑暗环境中观看更具效果。

本来做和手机一样比例的图,结果传不上来,改成1080*1080了

很明显,纯黑的观感不是太舒服,个人觉得刺眼且不柔和。而中间的的颜色,看起来整体舒服不少。

纯黑色(255,255,255)

(255,255,255)

不那么黑的(194,194,194)

(194,194,194)

再浅一点的(155,155,155)

(194,194,194)

总结

简单来说,为了美观和观感舒适,强对比度是不合适的,手机屏幕离眼睛很近,且深色模式本就是夜间使用,屏幕内容的对比度太高对眼睛不好,也影响使用。不是纯黑而是灰黑自然也是厂商和用户双方共同希望的结果。

测试代码开源

放个代码,感兴趣的自己去尝试一下吧,不局限于探讨深色模式,有其他颜色对比的可以酌情更改测试。

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)