2009-09-10 13 views
8

यदि मैं .NET और SQL Server 2008 का उपयोग कर रहा हूं, तो डेटाबेस में रंग संग्रहीत करने का सबसे अच्छा तरीका क्या है, क्या मुझे ToString का उपयोग करना चाहिए या इसे पूर्णांक में परिवर्तित करना चाहिए, या कुछ और?SQL डेटाबेस में रंग का प्रतिनिधित्व करने का सबसे अच्छा तरीका?

संपादित करें:

सभी मैं रंग से चाहते हैं इसे पुनः प्राप्त करने और निर्दिष्ट रंग में स्क्रीन पर कुछ आकर्षित करने के लिए सक्षम होने के लिए है। मुझे इसके खिलाफ पूछने में सक्षम होने की आवश्यकता नहीं है।

उत्तर

16

रंगों को मूल रूप से कैसे संग्रहीत किया जाता है?

यदि आप केवल 0xRRGGBB प्रारूप का उपयोग कर रहे हैं, तो आप इसे डेटाबेस में एक पूर्णांक के रूप में भी स्टोर कर सकते हैं, और जब आप SELECT (पठनीयता के लिए) को फिर से हेक्सिफ़ाई कर सकते हैं।

11

डेटाबेस में जानकारी कैसे संग्रहीत करें इस पर निर्भर करता है कि आप इसका उपयोग कैसे करें और इसका उपयोग कैसे करें। इसमें कोई बात नहीं है कि इसे स्टोर करने का सबसे अच्छा तरीका यह जानने के बिना है कि आप इसका उपयोग कैसे करेंगे।

+0

वाह स्टीव कास। मैंने आपका नाम 5 वर्षों में नहीं देखा है! –

+0

+1 संभोग, * किसी भी * डेटा के साथ। एक क्वेरी जो 0x40 और 0x50 के बीच 'हरे' के साथ सभी पिक्सेल की तलाश करती है, को स्टोरेज से अलग आर, जी और बी घटकों (प्रत्येक को अनुक्रमित) में लाभ होगा। एक जो 1 बिल में "पारदर्शी पिक्सल" मांगता है। रिकॉर्ड को एक चैनल को अलग करने की आवश्यकता होगी। या कुछ प्रश्न 'चमक' के लिए पूछेंगे और एचएसवी/एचएसएल प्रारूप की आवश्यकता होगी। –

6

रंग डिजिटल कैमरे, डेस्कटॉप प्रकाशन, सैनर और अन्य जैसे कुछ उद्योगों पर आश्चर्यजनक रूप से मुश्किल हो सकता है। अधिकांश प्रोग्रामर 24 बिट रंग (आमतौर पर आरजीबी) के साथ रंग को जोड़ते हैं, कुछ इसे 32 बिट (आरजीबीए) के साथ जोड़ते हैं। डीटीपी जैसे उद्योगों में काम करने वाले कुछ जो रंग के भारी उपयोग करते हैं, उनमें रंग सुधार, color space और इतने पर और आगे के नियमों का एक समृद्ध सेट होता है। तो आपको स्टोर करने की क्या ज़रूरत है?

  • आप एक ही प्रारूप है कि बदलने के लिए नहीं जा रहा है स्टोर करने के लिए की जरूरत है?
  • क्या आपको कई प्रारूपों को स्टोर करने की आवश्यकता है और पता है कि वास्तव में कौन सा प्रारूप संग्रहीत किया जाता है (RGB बनाम आरजीबीए बनाम सीएमवाई बनाम HSV ईटीवी)? ध्यान दें कि आरजीबी के रूप में स्पष्ट रूप से कुछ भी स्पष्ट रूप से Adobe RGB या sRGB हो सकता है।
  • क्या आपको रंग स्थान और सुधार को स्टोर करने की आवश्यकता है? ध्यान दें कि आरजीबी रंग का कोई मतलब नहीं है w/o उचित color management
  • क्या आपको एक साधारण टेक्स्ट विवरण ('लाल', 'चूना', 'टील' इत्यादि) स्टोर करने की आवश्यकता है?
  • क्या आपको 'वेब' रंग (यानी आरजीबी या आरजीबीए हेक्स के रूप में) स्टोर करने की आवश्यकता है?
2

ठीक है, मैं उन्हें छह अंकों के हेक्स कोड के रूप में स्टोर करूंगा। इससे वास्तव में अन्य रंगों के बीच रंगों की खोज की दिलचस्प संभावना खुलती है। यदि आप वास्तव में इसे शक्तिशाली बनाना चाहते हैं, तो आर, जी, बी हेक्स संख्याओं को तीन कॉलम में रखें। इससे आपको ऐसे रंग मिलते हैं जिनमें बहुत लाल होते हैं, या जो किसी अन्य रंग के समान होते हैं (तीन मानों के औसत अंतर से क्रमबद्ध करें)।

+0

खुद को सुझाव देने वाला था। हेक्स-रंग जाने का रास्ता है, इमो। – roosteronacid

3

यदि आप System.Drawing.Color संग्रहीत कर रहे हैं, तो आपको अल्फा और 3 रंग चैनलों का प्रतिनिधित्व करने वाले 4 बाइट्स स्टोर करने की आवश्यकता है। आप int डेटा प्रकार का उपयोग कर सकते हैं।

आप भंडारण कर रहे हैं System.Windows.Media.Color (WPF से), वहाँ उपयोग आप उपयोग कर रहे के आधार पर दो संभावनाएं हैं:

  1. आप केवल एक int डेटा प्रकार के रूप ARGB रंग, दुकान उपयोग कर रहे हैं।
  2. यदि आप ScRGB प्रारूप का उपयोग कर रहे हैं, तो आपको 4 फ्लोट (सिंगल) मानों को स्टोर करने की आवश्यकता है। मैं इसे स्टोर करने के दो तरीके सुझाता हूं:
    1. उपयोगकर्ता द्वारा परिभाषित प्रकार 4 फ्लोट फ़ील्ड के साथ।
    2. एक varchar (लंबाई परिशुद्धता पर निर्भर करते हैं) और भंडारण
      color.ToString(CultureInfo.InvariantCulture)
1

रंग आप संग्रहीत करना चाहते हैं के प्रकार पर इतना निर्भर करता है। उदाहरण के लिए। यदि यह एक निश्चित पैलेट से है तो एक छोटा int या यहां तक ​​कि एक हस्ताक्षरित बाइट पर्याप्त हो सकता है।

3 बाइट आरजीबी या 4 बाइट एआरजीबी (ए = अल्फा, यानी पारदर्शिता) 32 बिट में फिट हो सकता है, इसलिए 32 बिट हस्ताक्षरित पूर्णांक प्रकार काम करेगा। यह ज्यादातर अनुप्रयोगों के लिए मानक है। हालांकि, आप और अधिक चाहते हैं - जिस स्थिति में 64 बिट हस्ताक्षरित पूर्णांक की आवश्यकता हो सकती है।

वैकल्पिक रूप से, यदि आप अपने घटकों के अनुसार रंग को संशोधित या क्वेरी करना चाहते हैं, तो मैं प्रत्येक घटक को अपने स्वयं के हस्ताक्षरित int (यानी लाल, हरा, नीला, अल्फा फ़ील्ड) के रूप में संग्रहीत करता हूं।

संबंधित मुद्दे

 संबंधित मुद्दे