如果我使用的是.Net和SQL Server 2008,那么在数据库中存储颜色的最佳方法是什么?我应该使用ToString还是将其转换为整数或其他内容?
编辑:
我想要的颜色是能够检索它并在屏幕上以指定的颜色绘制一些东西。我不需要能够查询它。
答案 0 :(得分:16)
如何以原生方式存储颜色?
如果您只是使用0xRRGGBB格式,您也可以将其存储为数据库中的整数,并在SELECT
时为了可读性而对其进行重新缩放。
答案 1 :(得分:11)
如何在数据库中存储信息取决于您打算如何使用和访问它。没有必要说明存储它的最佳方法是不知道你将如何使用它。
答案 2 :(得分:6)
在某些行业,如数码相机,桌面出版,sanners等,色彩可能会非常棘手。大多数程序员将颜色与24位颜色(通常为RGB)相关联,有些则将其与32位(RGBA)相关联。在像DTP这样大量使用颜色的行业中工作的少数人有更丰富的术语,包括色彩校正,color space等等。那你究竟需要存储什么?
答案 3 :(得分:3)
如果要存储System.Drawing.Color
,则需要存储代表alpha和3色通道的4个字节。您可以使用int
数据类型。
如果您要存储System.Windows.Media.Color
(来自WPF),根据您使用的用途,有两种可能:
int
数据类型。color.ToString(CultureInfo.InvariantCulture)
答案 4 :(得分:2)
好吧,我将它们存储为六位十六进制代码。这开启了实际搜索其他颜色之间颜色的有趣可能性。如果你真的想让它变得强大,请将R,G,B十六进制数保存在三列中。这样可以找到包含太多红色的颜色,或者与另一种颜色相似的颜色(按三个值的平均差异排序)。
答案 5 :(得分:1)
取决于您想要存储的颜色类型。例如。如果它来自固定的调色板,则短整数或甚至无符号字节可能就足够了。
3字节RGB或4字节ARGB(A = alpha,即透明度)可以适合32位,因此32位无符号整数类型可以工作。这是大多数应用程序的标准。 但是,您可能需要更多 - 在这种情况下可能需要64位无符号整数。
或者,如果你想根据它的组件修改或查询颜色,我会将每个组件存储为它自己的unsigned int(即红色,绿色,蓝色,Alpha字段)。