結論
謝大佬邀請,結論大佬也說了, 其實就是不是最好的選擇,而且也沒必要。
就顏色而言,在電腦的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)