.NET

2010-08-19 9 views
18

similar question's उत्तर में सभी को फ़ाइल को सहेजने की आवश्यकता है, क्लिपबोर्ड पेस्टिंग के लिए स्मृति में बीएमपी को पीएनजी में कनवर्ट करें। हालांकि, मैं फ़ाइल को कन्वर्ट करने की कोशिश कर रहा हूं और फिर उसे क्लिपबोर्ड पर कॉपी कर रहा हूं।.NET

मैं बिटमैप (या किसी भी छवि) को फ़ाइल सिस्टम में सहेजे बिना पीएनजी में कैसे परिवर्तित कर सकता हूं?

अद्यतन:
मैं एक आवेदन पत्र में चित्र चिपकाने में (इस मामले Evernote में) कोशिश कर रहा हूँ। जब आप क्लिपबोर्ड (जैसे ब्राउज़र के माध्यम से) में एक छवि की प्रतिलिपि बनाते हैं, तो यह इसके छवि प्रारूप को याद करता है और जब आप इसे पेस्ट करते हैं, तो यह एक ही सटीक प्रारूप के साथ एक छवि बना देगा। उदाहरण के लिए, यदि आप एक पीएनजी कॉपी करते हैं, तो यह एक पीएनजी पेस्ट करेगा। यदि आप एक जेपीजी कॉपी करते हैं, तो यह एक जेपीजी, इत्यादि पेस्ट करेगा।

मैं क्लिपबोर्ड में जो भी छवि वर्तमान में ले रहा हूं, उसे आकार देने के लिए स्केल कर रहा हूं, और फिर इसे पीएनजी के रूप में क्लिपबोर्ड में रखूं, जैसे कि जब इसे एवरोनीट में चिपकाया जाता है, तो यह एक पीएनजी बना देगा। HTML FORMAT, CF_BITMAP, CF_DIB, CF_DIBV5:

मैं अपने ब्राउज़र में एक PNG छवि को कॉपी करते हैं, मैं निम्न स्वरूपों में देखते हैं। मुझे यकीन नहीं है कि इनमें से कौन सा Evernote चिपकाने के लिए उपयोग कर रहा है। मैं इस धारणा के तहत था कि यह CF_BITMAP था, लेकिन नीचे दी गई टिप्पणियों को पढ़ने के बाद, मुझे लगता है कि यह अन्य प्रारूपों में से एक का उपयोग कर रहा है।

मैं क्लिपबोर्ड में एक छवि कैसे रख सकता हूं जिसे चिपकाए जाने पर पीएनजी के रूप में माना जाएगा?

+0

जहां चिपकाने पर योजना के लिए Bitmap? मुझे लगता है कि क्लिपबोर्ड छवि प्रारूपों को jpg/png जैसे फ़ाइल प्रारूप में संग्रहीत नहीं करता है। जब तक कि आप इसे एक फ़ाइल में निर्देशिका में पेस्ट करने की योजना बना रहे हों? – russau

+0

@ रुसाऊ: मैंने यह स्पष्ट करने के लिए प्रश्न अपडेट किया कि मैं क्या करने की कोशिश कर रहा हूं। – Senseful

+0

_ "जब आप क्लिपबोर्ड में एक छवि कॉपी करते हैं (उदा। ब्राउज़र के माध्यम से), तो यह इसके छवि प्रारूप को याद करता है" _ - यह पूरी तरह से गलत है। आप शायद इस बात को भ्रमित कर रहे हैं क्योंकि कुछ एप्लिकेशन मानक विंडोज क्लिपबोर्ड के पास कोई पारदर्शिता समर्थन नहीं होने के कारण क्षतिपूर्ति के लिए एक पीएनजी मेमोरी स्ट्रीम का उपयोग करते हैं। – Nyerguds

उत्तर

24

सहेजें एक MemoryStream

byte[] result = null; 
using (MemoryStream stream = new MemoryStream()) 
{ 
    bitmap.Save(stream, ImageFormat.Png); 
    result = stream.ToArray(); 
} 
+0

परिणाम किस प्रकार का है? – Senseful

+1

यह एक बाइट सरणी है, उत्तर – russau

+0

अद्यतन किया गया है क्या आप इसे 'छवि' में परिवर्तित करने के लिए आवश्यक कोड शामिल कर सकते हैं? (मैं इसे अभी अपने आप को समझने की कोशिश कर रहा हूं और मैं इसे एक टिप्पणी के रूप में पोस्ट करूंगा ताकि आप कॉपी/पेस्ट कर सकें) – Senseful