2013年1月17日 星期四

[Color]小心使用HSV(副標: 用HSV為轉換顏色的基礎很危險)

在描述色彩的上, 最常用的標示法為 RGB 與 HSV.

在Android系統上, 有Color這個class可以幫忙轉換與取得所需的色彩資訊.

其中
  色彩值(color)為整數(int)
  RGB的值均為整數(int)     範圍均為 [0:255]
  HSV為浮點數(float)        範圍H:[0.0F : 360.0F]   S[0.0F : 1.0F]   V[0.0F : 1.0F]

假定, 今天具有RGB的值, 則可利用
             int color = Color.rgb(red, green, blue) 來取得對應的顏色.

假定, 今天具有HSV的值, 則可利用
            int color = Color.HSVToColor(hsv) 來取得對應的顏色.

相反的, 如果今天給定color值, 則可利用

               int red = Color.red(color)
               int green = Color.green(color)
               int blue = Color.blue(color)
    來取得RGB值

亦可利用  Color.colorToHSV(color, hsv) 來將顏色轉換成 hsv.

但因為hsv為浮點數, 所以若將由 color1 轉換成的hsv值在轉換為color2時.
由於其運算會由浮點數再度轉換為整數. 中間可能會有精準度的問題而使得color1不等於color2.

故, 若有顏色轉換上的需求, 盡可能不要用hsv轉為color, 而只要進行color轉向hsv的單向工程. 至於color的來源可藉由同是整數的RGB轉換得來, 或直接使用16進位法的整數表示式即可.(同樣在整數的轉換中, 精準度不會因為轉換而失去)


2013年1月16日 星期三

即便是相同類型的東西

用於不同的case就需要不同的方法 ?!
是不是有什麼更共同的做法是我沒想清楚的?

2013年1月10日 星期四

做著明知沒有什麼使用者的東西

這幾天把一個之前的東西"重新"寫了一版...

是的...就像我還在上份工作時常做的事情...砍掉重練....一切重頭來...

只是...這個東西...其實主要使用者幾乎就只會有我這個人本身...

在已經投入這個領域一段時間後...我竟然還會做一個明知沒啥人會用的東西...假設我是個旁觀者...我一定覺得作這個的人在浪費時間吧...

但...我個人真的還蠻需要這個的...只是我無法付錢給自己而已....囧rz