दिलचस्प पोस्ट
एंड्रॉइड में कॉल कैसे रोकें मास्टर शाखा को गिट में कैसे बदलना है, पूरी तरह से किसी अन्य शाखा से? लापता डेटा की स्थिति में geom_bar के लिए लगातार चौड़ाई एकाधिक जीआईटी वापस आना एंड्रॉइड स्टूडियो: "निष्पादन कार्य के लिए असफल": ऐप: मर्ज डिबग संसाधन संसाधित करें "यदि प्रोजेक्ट को ड्राइव सी पर बनाया गया है: दो पंक्तियों पर पाठ ओवरफ़्लो एल्हीसिस पायथन आवृत्ति पहचान Jquery $ .ajax का उपयोग कर servlet के लिए अनुरोध पैरामीटर सरणी कैसे भेजें? $ (यह) AJAX सफलता के अंदर काम नहीं कर रहा है SSL प्रमाणपत्र विश्वसनीय नहीं है – केवल मोबाइल पर JSON में टिप्पणियों का उपयोग किया जा सकता है? जावा में गतिशील रूप से व्हेरिएबल के नाम उत्पन्न करने के लिए क्या दूर है? डिव के पहलू अनुपात बनाए रखें लेकिन सीएसएस में स्क्रीन चौड़ाई और ऊंचाई भरें? मैं दैनिक कार्य को करने के लिए C # Windows सेवा का शेड्यूल कैसे कर सकता / सकती हूं? सी + + में हैडर गार्ड

सी # में कच्चे छवि बाइट सरणी में प्रवेश छवि OLE वस्तु परिवर्तित करें

मुझे अपने वास्तविक मुद्दे के लिए सभी एक साथ जवाब नहीं मिल सकता है । डीबी इमेमा से छवि पुनः प्राप्त करते समय अमान्य पैरामीटर टुकड़ा करके टुकड़ा करके कोशिश करता है। सी # और एमएस एक्सेस 2010 में विजुअल स्टूडियो 2012 के साथ कार्य करना। मेरा समाधान एक ऐप गैर-वेब संबंधित है

मुझे इस भाग के बारे में निश्चित नहीं है, इसलिए यहां मेरा सवाल है कि किसी क्वेरी से एक बाइट सरणी ( बाइट [] ) में एक ऑल ऑब्जेक्ट की छवि ठीक से कैसे प्राप्त करें, क्योंकि निश्चित रूप से यह नहीं है कि मैं कैसे 'यह निम्नलिखित कोड के साथ कर रहा हूँ मैं जिस पंक्ति के बारे में बात कर रहा हूँ वह पंक्ति ["फ़ोटो"] है

OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [APP_Equipamento_Geral] WHERE COD_ETIQ like '%" + codigo + "%'", l); DataSet ds = new DataSet(); adapter.Fill(ds, "[APP_Equipamento_Geral]"); string s = ds.Tables["[APP_Equipamento_Geral]"].Columns[16].ColumnName; foreach (DataRow row in ds.Tables["[APP_Equipamento_Geral]"].Rows) { eq.NSerie = row["N_SERIE"].ToString(); eq.NInventario = row["Codigo"].ToString(); if (row["FOTO"] != DBNull.Value && row["FOTO"] != null) { string str = row["FOTO"].ToString(); byte[] b = stringToByteArray(str); byte[] imagebyte = GetImageBytesFromOLEField(b); //Error caught here MemoryStream ms = new MemoryStream(); ms.Write(imagebyte, 0, imagebyte.Length); } } 

विधि GetImageBytesFromOLEField यहाँ पाया जा सकता है यह त्रुटि जो मुझे दे रही है वह लाइन स्ट्रिंग strvTemp = strTemp.Substring (0, 300) पर सूचकांक की लंबाई के बारे में है ;

दोबारा, मुख्य प्रश्न यहां है कि डेटारेव पंक्ति ["FOTO"] में ओएएल ऑब्जेक्ट को कैसे बाइट [] में बदलना है और फिर उस पद्धति में उपयोग करें।

वेब के समाधान से एकत्रित समाधान "सी # में कच्चे छवि बाइट सरणी में प्रवेश छवि OLE वस्तु परिवर्तित करें"

यहां समस्या यह है कि इमेडेड छवि एक साधारण BMP या JPEG । वह एक था

Microsoft Word Picture

और ओएलई हेडर सूचना मूल GetImageBytesFromOLEField() कोड की 300 बाइट विंडो की तुलना में काफी बड़ी थी। (यानी, 300 बाइट स्कैन करने के बाद, इसे "हेडर आकार निर्धारित करने में असमर्थ …" के साथ छोड़ दिया गया।)

निम्नलिखित कोड को अपने स्वयं के वर्ग में अपडेट किया गया है। कसररी परीक्षण में Microsoft Word Picture , एक साधारण BMP , और एक सरल JPEG

 using System; using System.Collections.Generic; using System.Linq; namespace OleImageTest { public static class OleImageUnwrap { public static byte[] GetImageBytesFromOLEField(byte[] oleFieldBytes) { // adapted from http://blogs.msdn.com/b/pranab/archive/2008/07/15/removing-ole-header-from-images-stored-in-ms-access-db-as-ole-object.aspx const int maxNumberOfBytesToSearch = 10000; byte[] imageBytes; // return value var imageSignatures = new List<byte[]>(); // PNG_ID_BLOCK = "\x89PNG\r\n\x1a\n" imageSignatures.Add(new byte[] { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A }); // JPG_ID_BLOCK = "\xFF\xD8\xFF" imageSignatures.Add(new byte[] { 0xFF, 0xD8, 0xFF }); // GIF_ID_BLOCK = "GIF8" imageSignatures.Add(new byte[] { 0x47, 0x49, 0x46, 0x38 }); // TIFF_ID_BLOCK = "II*\x00" imageSignatures.Add(new byte[] { 0x49, 0x49, 0x2A, 0x00 }); // BITMAP_ID_BLOCK = "BM" imageSignatures.Add(new byte[] { 0x42, 0x4D }); int numberOfBytesToSearch = (oleFieldBytes.Count() < maxNumberOfBytesToSearch ? oleFieldBytes.Count() : maxNumberOfBytesToSearch); var startingBytes = new byte[numberOfBytesToSearch]; Array.Copy(oleFieldBytes, startingBytes, numberOfBytesToSearch); var positions = new List<int>(); foreach (byte[] blockSignature in imageSignatures) { positions = startingBytes.IndexOfSequence(blockSignature, 0); if (positions.Count > 0) { break; } } int iPos = -1; if (positions.Count > 0) { iPos = positions[0]; } if (iPos == -1) throw new Exception("Unable to determine header size for the OLE Object"); imageBytes = new byte[oleFieldBytes.LongLength - iPos]; System.IO.MemoryStream ms = new System.IO.MemoryStream(); ms.Write(oleFieldBytes, iPos, oleFieldBytes.Length - iPos); imageBytes = ms.ToArray(); ms.Close(); ms.Dispose(); return imageBytes; } private static List<int> IndexOfSequence(this byte[] buffer, byte[] pattern, int startIndex) { // ref: http://stackoverflow.com/a/332667/2144390 List<int> positions = new List<int>(); int i = Array.IndexOf<byte>(buffer, pattern[0], startIndex); while (i >= 0 && i <= buffer.Length - pattern.Length) { byte[] segment = new byte[pattern.Length]; Buffer.BlockCopy(buffer, i, segment, 0, pattern.Length); if (segment.SequenceEqual<byte>(pattern)) positions.Add(i); i = Array.IndexOf<byte>(buffer, pattern[0], i + 1); } return positions; } } }