2009-01-19 9 views

उत्तर

44

किस प्रकार का byte[] आपका मतलब है? कच्चा फ़ाइल-स्ट्रीम डेटा? जो मामले में, कैसे की तरह (एक ग्राहक आवेदन में System.Drawing.dll का प्रयोग करके) कुछ के बारे में:

byte[] raw = ...todo // File.ReadAllBytes("foo.bmp"); 
    using(Image img = Image.FromStream(new MemoryStream(raw))) 
    { 
     img.Save("foo.jpg", ImageFormat.Jpeg); 
    } 
+0

दूसरा वाला वही था जो मैं खोज रहा था। हालांकि मैं फ़ाइल के बजाए एक और मेमोरीस्ट्रीम में लिख रहा हूं। धन्यवाद! – Marc

3

यदि यह महज एक है:

using(Image img = Image.FromFile("foo.bmp")) 
    { 
     img.Save("foo.jpg", ImageFormat.Jpeg); 
    } 

या एक new MemoryStream(arr) साथ FromStream उपयोग करें यदि आप वास्तव में एक byte[] की क्या ज़रूरत है कच्चे पिक्सेल डेटा का बफर, और एक पूर्ण छवि फ़ाइल नहीं (हेडर आदि सहित, जैसे कि जेपीईजी) तो आप Image.FromStream का उपयोग नहीं कर सकते हैं।

मुझे लगता है कि आप जो खोज रहे हैं वह है System.Drawing.Bitmap.LockBits, एक सिस्टम लौट रहा है। ड्रॉइंग.इमेजिंग। इमेजडाटा; यह स्मृति के लिए सूचक का उपयोग कर छवि के पिक्सल को पढ़ने और लिखने तक पहुंच प्रदान करता है।

-4
public static Bitmap BytesToBitmap(byte[] byteArray) 
{ 
    using (MemoryStream ms = new MemoryStream(byteArray)) 
    { 
    Bitmap img = (Bitmap)Image.FromStream(ms); 
    return img; 
    } 
} 
+0

यह एक बिटमैप है। वह एक जेपीजी चाहता है। – AnthonyBlake

+0

सही, कोड पूर्ण नहीं हुआ है। लेकिन यह एक बिटमैप देता है, जिसे आप बाद में किसी भी प्रारूप में फ़ाइल में सहेज सकते हैं .... मुझे लगता है कि यह प्रतिष्ठा युद्धों में मेरा स्वागत है ... वैसे भी मेरी गलती। –

+0

@ जुआनजो.राना लेकिन आपने अपने प्रश्न का उत्तर नहीं दिया है, बस उसे बताया कि बिटमैप कैसे प्राप्त करें। – gbjbaanb

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