2012-06-07 13 views
6

मैं वर्तमान में निम्नलिखित समस्या हो रही है:बाइट सरणी या मैट्रिक्स बिटमैप को

Byte1: R color of pixel 0,0. 
Byte2: G color of pixel 0,0. 
Byte3: B color of pixel 0,0. 
Byte4: R color of pixel 0,1. 

... 
ByteN: R color of pixel n,n. 

तो मुझे क्या करना चाहते हैं इन परिवर्तित है: मैं एक बाइट सरणी कि निम्नलिखित विन्यास के साथ एक फ़ाइल से आता है परिवर्तित करना चाहते हैं bitmap.setPixel के साथ पिक्सेल द्वारा पिक्सेल सेट किए बिना बिटमैप में बाइट्स को बहुत लंबा लगता है।

कोई सुझाव? अग्रिम में धन्यवाद!

+0

कैसे आप चौड़ाई/ऊंचाई अगर आपके पास एक बाइट सरणी है निर्धारित कर रहे हैं? क्या यह 2-आयामी सरणी है? क्या यह आपको हाथ से पहले दिया गया है? – vcsjones

+0

क्या आपने यह देखा है? http://stackoverflow.com/questions/6782489/create-bitmap-from-byte-array-of-pixel-data बिटमैप क्लास में एक सीटीओआर है जो सीधे बाइट सरणी का उपयोग करता है: http://msdn.microsoft.com/en -us/लाइब्रेरी/zy1a2d14 – kol

+0

हां, मेरे पास छवि की चौड़ाई और ऊंचाई है। इस मामले में इसकी 1280 x 720. – waclock

उत्तर

11

यदि आपके पास पिक्सेल के byte[] और चौड़ाई और ऊंचाई है, तो आप बिटमैप पर बाइट्स लिखने के लिए BitmapData का उपयोग कर सकते हैं क्योंकि आप प्रारूप को भी जानते हैं। यहां एक उदाहरण दिया गया है:

//Your actual bytes 
byte[] bytes = {255, 0, 0, 0, 0, 255}; 
var width = 2; 
var height = 1; 
//Make sure to clean up resources 
var bitmap = new Bitmap(width, height); 
var data = bitmap.LockBits(new Rectangle(Point.Empty, bitmap.Size), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb); 
Marshal.Copy(bytes, 0, data.Scan0, bytes.Length); 
bitmap.UnlockBits(data); 

यह एक बहुत तेज़ ऑपरेशन है।

आप अपने सी # फ़ाइल के शीर्ष पर इन तीन नामस्थान आयात करने के लिए, कम से कम की आवश्यकता होगी:

using System.Drawing; 
using System.Drawing.Imaging; 
using System.Runtime.InteropServices; 
+0

आपकी प्रतिक्रिया के लिए धन्यवाद, मैंने आपके कोड का उपयोग करने की कोशिश की लेकिन ImageLockMode, PixelFormat, और मार्शल को पहचाना नहीं गया है। मुझे अतिरिक्त पुस्तकालयों की क्या ज़रूरत है? – waclock

+0

आपको कुछ 'उपयोग करने' की आवश्यकता है। मेरा संपादन देखें। – vcsjones

+0

धन्यवाद, यह पूरी तरह से काम किया! – waclock

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