我想......我是認為用誤差擴散的方法
應該會好一點
要的話可能要自己寫軟體來做
因為要針對4096色來做誤差擴散可能會比較少見
http://www.codingnow.com/2000/gamedev/tips/errordif.htm
這是網路上的文章 可以參考看看
我想......我是認為用誤差擴散的方法
應該會好一點
要的話可能要自己寫軟體來做
因為要針對4096色來做誤差擴散可能會比較少見
http://www.codingnow.com/2000/gamedev/tips/errordif.htm
這是網路上的文章 可以參考看看
作者:VicLin
手機圖片的4096色(12bit) 應該是擴散仿色後的 gif (8bit) 吧?
畢竟那麼小的圖片...要以肉眼分辨細微的色差...是很不容易的
圖1:
這是ACDSee7的功能
圖2:
這是24位元的高彩圖片BMP
圖3:
這是經過ACDSee7轉換為256色的BMP圖片
圖2跟圖3很像吧?! 這是否為你們所說的擴散仿色呢?
我很喜歡這個功能! 直接用其它軟體轉存顏色會差很多, 但是ACDSee7不會!
這麼一來就可以把全彩的圖片轉成256色弄到手機上, 顏色就不會太失真吧?!
手機的4096色指的是RGB各4bits 的 12bits/pixel,
ACD See的4bpps 與 8bpps 指的是 index color,每個顏色的色階還是24(18)bits,
轉完後減少的是整張圖形的顏色數,而不是每個點的色階數喔。
抱歉我不是很懂, 但是如下面2張圖都只有一種顏色
圖1:
24位元的BMP [15.6 KB]
圖2:
轉成8位元的256色BMP [6.24 KB]
轉完之後整張圖的顏色數沒有少對吧? 那為何檔案卻變小了, 這難道不是因為每個像素的色階數變少嗎?@@
index color格式都會有一個叫做 "color palette" 的 table,
裡面記錄的是每一個 index 所代表的 RGB 值,例如:
一個藍色的點如果用24bit表示時為 RGB(0, 0, 255),
但用index color表示時 "color palette" 中會存放一筆 RGB(0, 0, 255) 的值,
資料部份只要存該值在 table中的 index 值,就可以用查表方式找到該點的顏色,
所以 16/256 color 指的是color palette的大小,4/8bpps指的是每個index所佔用的空間。
以上述那個圖形為例,共5320點:
24bit格式需要 3*5320位元組儲存,約15KB;
但用8bit index只需 (palette + data) = 256*4 + 1*5320位元組儲存,約6KB。
手機的色階數不夠,不管是index color或全彩的圖形都無法完整顯示,
一般都是透過減色的方式才能讓圖檔看起來失真最少,
例如半色調(Halftone)或 Error Diffusion都是常用的方式。
因為大部分的影像格式沒有所謂的RGB 4:4:4的格式,所以市面上的軟體幾乎找不到能作轉換的軟體,
提供一個試過的方法請參考看看:
用photoshop將圖檔分解為RGB三張256灰階圖,將256灰階轉為標準16灰階圖,再將3張圖合併為全彩圖,
儲存時不要用jpg格式以免失真,
可惜碰到只支援jpg格式,或自己有減色功能的手機,出來的效果都不理想。
作者:JerryChen
解釋的好詳細 獲益匪淺
不過多數手機圖片似乎都是以gif 256-16 color擴散仿色處理而已??
書籤