System.Drawing.Icon
प्रकार और byte[]
के बीच कैसे परिवर्तित होता है? मैं कुछ सरल खोज रहा हूं जो (उम्मीद है) .NET2 में काम कर सकता है।सी # .NET: आइकन को बाइट में कनवर्ट करें [] और फिर वापस
उत्तर
आप एक MemoryStream
के माध्यम से जाना है, मूल रूप से:
public static byte[] IconToBytes(Icon icon)
{
using (MemoryStream ms = new MemoryStream())
{
icon.Save(ms);
return ms.ToArray();
}
}
public static Icon BytesToIcon(byte[] bytes)
{
using (MemoryStream ms = new MemoryStream(bytes))
{
return new Icon(ms);
}
}
(ऐतिहासिक ध्यान दें:। मुझे यकीन है कि चाहे या नहीं यह धारा निर्माता के लिए पारित के निपटान के लिए सुरक्षित था नहीं था यह नहीं है । Bitmap
के लिए ऐसा करने के लिए सुरक्षित, उदाहरण के लिए ... उस पर धारा को रखती है और बाद में इसे से पढ़ सकते हैं जाहिर है यह ठीक Icon
के लिए हालांकि मुझे MSDN इस स्पष्ट कर दिया इच्छा ...)
पूर्व
private byte[] GetBytes(Icon icon)
{
MemoryStream ms = new MemoryStream();
icon.Save(ms);
return ms.ToArray();
}
और (वहाँ कई तरीके हैं):
Bitmap bmpIcon = icon.ToBitmap();
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
bmpIcon.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
return ms.ToArray();
}
नहीं, 'गेटबफर' को कॉल न करें - जो अंत में अतिरिक्त 0s हो सकता है। 'ToArray' उपयोग करने के लिए सही कॉल है। –
धन्यवाद, ध्यान दिया। मैं वास्तव में सिर्फ लिंक से सामान कॉपी किया। इसमें कई समाधान हैं। Google पर 20 सेकंड :) –
... और फिर से वापस
public static Icon IconFromBytes(byte[] bytes) {
using(var ms = new MemoryStream(bytes)) {
return new Icon(ms);
}
}
चिह्न वर्ग के रूप में जल्द ही यह है के रूप में धारा से पढ़ता का निर्माण किया। एमएस बंद करने में कोई नुकसान नहीं।
+1 'उपयोग' का उपयोग करने के लिए +1 :) – Abel
-1 यह समझने के लिए कि क्या निपटान() करता है। –
विस्तृत करने के लिए देखभाल? मैं मानता हूं कि मेमोरीस्ट्रीम को निपटान की आवश्यकता नहीं है क्योंकि इसमें अप्रबंधित संसाधन नहीं हैं ... लेकिन यह IDISposable लागू होने पर निपटान को कॉल करने के पूरे विचार को मजबूत करता है। –
- 1. सी # हेक्स में पूर्णांक कनवर्ट करें और फिर से वापस
- 2. जावा बाइट सरणी में जेआरबीई स्ट्रिंग को कनवर्ट करें, और फिर वापस
- 3. सी # बाइट को बिटरएरे में कनवर्ट करना
- 4. किसी ऑब्जेक्ट को सी # में बाइट सरणी में कनवर्ट करें, इसे सॉकेट पर भेजें, फिर ऑब्जेक्ट
- 5. बिटमैप को बाइट सरणी में कनवर्ट करें
- 6. सी # - यूट को बाइट में कनवर्ट करना []
- 7. सी # चार को बाइट (हेक्स प्रतिनिधित्व) में कनवर्ट करें
- 8. फ़ॉन्ट को स्ट्रिंग में परिवर्तित करें और फिर से वापस
- 9. बाइट ऐरे को बाइट ऐरे में कनवर्ट करें?
- 10. एक स्ट्रिंग को एक बाइट सरणी में कनवर्ट करें और फिर मूल स्ट्रिंग
- 11. हैशटेबल को एक्सएमएल स्ट्रिंग में कनवर्ट करें और .NET Serializer
- 12. 'फ्लोट' से 'बाइट [4]' में कनवर्ट करना और .NET माइक्रो फ्रेमवर्क
- 13. JSONArray से स्ट्रिंग में कनवर्ट करना फिर वापस
- 14. जावा स्ट्रिंग को बाइट सरणी में कनवर्ट करें
- 15. कैसे बाइट और वापस
- 16. यूनिकोड स्ट्रिंग को बाइट स्ट्रिंग में कनवर्ट करें
- 17. सी # में स्ट्रिंग के लिए बाइट सरणी परिवर्तित और फिर से वापस
- 18. IntPtr बाइट सरणी और वापस
- 19. सिल्वरलाइट में एक बाइट ऐरे को स्ट्रिंग में कनवर्ट करें?
- 20. बाइट सरणी को Wav फ़ाइल में कनवर्ट करें
- 21. बाइट सरणी को लघु सरणी में और फिर जावा में वापस
- 22. पीडीएफबॉक्स पीडीएफ को छवि बाइट में कनवर्ट करें []
- 23. विधि सूचक को पूर्णांक में कनवर्ट करें, फिर इसे
- 24. सी # 4.0: पीडीएफ को बाइट में कनवर्ट करें [] और इसके विपरीत
- 25. BufferedImage को बाइट में कनवर्ट करें [] बिना I/O
- 26. सी # कनवर्ट सिस्टम.आईओ। स्ट्रीम टू बाइट []
- 27. कॉन्स char * से NSString में कनवर्ट करें * और वापस कनवर्ट करें - _NSAutoreleaseNoPool()
- 28. एक थंबनेल बनाएं और फिर बाइट सरणी
- 29. बाइट सरणी से लाइन पढ़ें (बाइट सरणी को स्ट्रिंग में कनवर्ट नहीं करें)
- 30. django - एक सूची को एक क्वेरीसेट में वापस कनवर्ट करें
यह इंगित करने योग्य है कि बाइट्स "सहेजा गया" यहां फ़ाइल के लिखे गए बाइट्स के समान हैं (इसलिए इसमें फ़ाइल हेडर, कोई भी लागू संपीड़न आदि शामिल है) छवि के बाइट्स नहीं हैं। –
हां, आप इसे एक बिटमैप बना सकते हैं और यदि आपको आवश्यकता हो तो पिक्सेल की सरणी निकालें। –
बस उत्सुक है, आपने 'मेमोरीस्ट्रीम' को एक प्रयोग-ब्लॉक में अच्छी तरह से लपेट लिया है, आपने विपरीत बाइट्सटीओकॉन विधि में समान रूप से ऐसा क्यों नहीं किया? अब एमएस का निपटान करने की कोई ज़रूरत नहीं है? – Abel