2010-05-21 4 views
0

Je reçois un fichier XML pour générer un aperçu, dans un format comme celui-ci:tableau Blob octets en XML à l'image

<PARAM> <LABEL>Preview 16x16</LABEL> <ID>{03F5C6D3-ABCD-4889-B3AA-C3524C62FA1C}</ID> <LAYER>-1</LAYER> <VALUE> <BLOB> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8S EhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEU Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAAR CAAOABADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDP+IXxH+Ilr4/1DRrLxZqUrjUTbMLKdtsz eZgLCgHyDHy4GSeee9dT4Z8G/FjxHrmla3Y3bRlRtl1iW9ztGTnlXLS47YG0nrXQa78Bda07 U7jXNM1nS9yGVhJLHJvk8wkEkchWAYjcuDzxggGuB8K6v49i8X28Wg+IodMkaUQFI4sQSEt1 eM5B42qOPlVVVcAV5M8NKdSMW/cV3vrfXyb/AB/I+4+sVUnPCUVeyV3Z3010923krdPU/9k= </BLOB> </VALUE> </PARAM>

J'ai besoin de convertir la section <BLOB> en une image. J'accéder à l'élément Valeur comme ceci:

string clean = valueC.ElementAt(0).Value.Replace("\t", string.Empty).Replace("\n", string.Empty); 

J'ai essayé de le lire dans un MemoryStream et convertir à l'image:

MemoryStream ms = new MemoryStream(blob, 0, blob.Length); 
ms.Write(blob, 0, blob.Length); 
Image i = Image.FromStream(ms); 

De cette façon, je reçois « Paramètre exception non valide » à obtenir l'image. J'ai aussi essayé de l'enregistrer directement dans un fichier:

using (FileStream fs = new FileStream(label + ".jpg", FileMode.Create)) 
{ 
    fs.Write(blob, 0, blob.Length); 
} 

Mais quand je tente d'ouvrir le fichier généré, affiche un message sur les dommages en elle.

Je sais que le codage est important, je l'ai déjà essayé ASCII, UTF-8, UTF-7 et ceci:

BinaryFormatter bf = new BinaryFormatter(); 
MemoryStream ms = new MemoryStream(); 
bf.Serialize(ms, clean); 
ms.Seek(0, 0); 
byte[] blob = ms.ToArray(); 

Je ne sais pas quoi faire d'autre. J'apprécierai si quelqu'un peut m'aider.

Merci

Répondre

2

Il semble que vos données sont en base64 de sorte que vous devez d'abord de le décoder puis enregistrer comme une image.