如果我使用的是.Net和SQL Server 2008,那麼在數據庫中存儲顏色的最佳方式是,我應該使用ToString還是將其轉換爲整數或其他內容?在SQL數據庫中表示顏色的最佳方式?
編輯:
所有我從顏色要的是能夠檢索,並在屏幕上繪製一些在指定的顏色。我不需要能夠查詢它。
如果我使用的是.Net和SQL Server 2008,那麼在數據庫中存儲顏色的最佳方式是,我應該使用ToString還是將其轉換爲整數或其他內容?在SQL數據庫中表示顏色的最佳方式?
編輯:
所有我從顏色要的是能夠檢索,並在屏幕上繪製一些在指定的顏色。我不需要能夠查詢它。
顏色是如何原生存儲的?
如果你只是使用0xRRGGBB格式,你可以將它作爲一個整數存儲在數據庫中,當你爲了便於閱讀而重新整理它時。
如何在數據庫中存儲信息取決於您打算如何使用和訪問它。沒有任何說明存儲它的最佳方式是不知道如何使用它。
對於數碼相機,桌面出版,洗衣機等行業來說,顏色可能會令人驚訝地比較棘手。大多數程序員將顏色與24位顏色(通常爲RGB)相關聯,有些則將其與32位(RGBA)相關聯。少數在像DTP這樣大量使用色彩的行業中工作,有更豐富的術語,包括色彩校正,color space等等。那麼你需要存儲什麼?
好吧,我會將它們存儲爲六位十六進制代碼。這打開了在其他顏色之間實際搜索顏色的有趣可能性。如果您真的想使其功能強大,請將R,G,B十六進制數字保留在三列中。這可以讓你找到包含這麼多紅色的顏色,或者與另一種顏色相似的顏色(按三個值的平均差異排序)。
即將表明我自己。 HEX-colors是要走的路,imo。 – roosteronacid 2009-09-10 17:36:09
如果您要存儲System.Drawing.Color
,則需要存儲代表alpha和3個顏色通道的4個字節。您可以使用int
數據類型。
如果要存儲的System.Windows.Media.Color
(來自WPF),有兩種可能取決於正在使用的用法:
int
數據類型。color.ToString(CultureInfo.InvariantCulture)
取決於要存儲顏色的種類那麼多。例如。如果它來自固定的調色板,那麼短整型或甚至無符號字節可能就足夠了。
3字節RGB或4字節ARGB(A = alpha,即透明度)可以適合32位,所以32位無符號整數類型可以工作。這是大多數應用程序的標準。 但是,您可能需要更多 - 在這種情況下,可能需要64位無符號整數。或者,如果你想根據其組件來修改或查詢顏色,我會將每個組件存儲爲它自己的無符號整型(即紅色,綠色,藍色,Alpha字段)。
史蒂夫卡斯。我在5年內沒有見過你的名字! – 2009-09-10 17:39:12
+1當然,與任何*數據一樣。查找在0x40到0x50之間查找所有像素爲「green」的查詢將受益於存儲到單獨的R,G和B組件(各自編制索引)中。一個要求在10個「透明像素」。記錄需要將A通道分開。或者一些查詢會要求'亮度'並且需要HSV/HSL格式。 – 2009-09-10 18:00:29