關於 Mobile Device 的美工圖

jollen 發表於 June 19, 2007 11:37 PM

在為數眾多的 smart phone 產品中,都採用 QVGA(240x320)規格的 TFT-LCD panel,而這些 panel 都是 6x6x6 的 RGB 格式。因此,許多專為 mobile device 所發展的 rendering/text library 都會建議以此格式(6x6x6 RGB)來進行圖形介面與 art work 的設計。

比較另人好奇的地方是,6x6x6 的 RGB 格式要怎麼與 Linux kernel 的 framebuffer 驅動程式做對應。對 linux framebuffer 驅動程式有經驗的朋友都曉得,Linux framebuffer 驅動程式的 pixel format 為 4/8/16/24/32 BPP,可是我們的顯示 panel 是 18 BPP(6x6x6)的格式,要怎麼對應呢?

這是一個觀念問題。在數像處理的理論中,6x6x6 與 8x8x8 的 RGB 色彩「理論」上可視為相同,因為對人眼來說,少掉 1 或 2 個「bit plane」是對原來的圖像沒有影響的;不過,實際應用上仍會有一些「色差」的問題,所以需要一些方法來做「色差校對」。上週有一位朋友問到這個問題,利用端午佳節 google 了一些文獻,得到幾個簡單的方法,有機會再與大家分享。

由此可知,18 BPP 的 pixel format 在 Linux framebuffer 驅動程式中,可視為 8x8x8 即 24 BPP 的方式來處理。考量到 pixel 在記憶體的排列方式,以 s3c2410 為例,由於 1 pixel 佔用 1 word(4 bytes)的空間,所以用 0888 即 32 BPP 的方式來處理才方便。

對美工軟體來說,雖然我們的 panel 只能顯示 18 BPP 的顏色,但是對 art work 來說,只需要以傳統的 true color(0888 RGB)方式來繪圖即可,並不需要做特殊處理,也不需要特殊的繪圖軟體。而且,在大多數的例子中,也不需要考慮色差校對的問題。

讀者留言 (0)

留言功能維護中。將於近日重新開放。

連絡作者

Jollen Chen,Moko365(仕橙3G教室)講師,熱愛研究 Linux 與 Android 技術。曾為 Motorola、HTC、Foxconn、LG、OPPO、騰迅、廣達電腦、緯創、仁寶等超過 50 家企業講授課程。目前在 MokoVersity 擔任軟體工程師,撰寫 Node.js 程式,也在幾家科技廠兼任 Android Framework 研發顧問。您可透過電子郵件 <jollen (at) jollen (dot) org> 或這裡與我連絡。