2017-09-19 5 views
1

Je dois convertir un fichier wmf en tableau d'octets sans utiliser System.Drawing. La raison pour laquelle je ne peux pas utiliser System.Drawing est que certaines fonctionnalités du GDI + ne sont pas prises en charge dans un environnement Azure. Le code s'exécutera dans un environnement local, mais ne fonctionnera pas lorsqu'il est déployé sur le serveur. J'ai dû déplacer la logique de redimensionnement en dehors de notre application vers une machine virtuelle Azure afin d'utiliser le GDI +. Nous devons prendre en charge les fichiers wmf pour les applications héritées.Conversion d'image métafichier en tableau d'octets sans System.Drawing

Les éléments suivants échoueront lors du déploiement dans une application Web Azure.

byte[] imgArr; 
using (var ms = new MemoryStream()) 
{ 
    sourceImage.Save(ms, ImageFormat.Png); 
    imgArr = ms.ToArray(); 
} 

et

var imgCon = new ImageConverter(); 
var imgArr = (byte[])imgCon.ConvertTo(sourceImage, typeof(byte[])); 

Les deux utilisent la bibliothèque System.Drawing et qui utilise le GDI +. Existe-t-il d'autres façons d'obtenir un métafichier Windows sur un tableau d'octets?

Répondre

0

Essayez d'utiliser le code suivant, cela fonctionne de mon côté.

FileInfo fileInfo = new FileInfo(path); // the path should be accessed in the azure portal 

    // The byte[] to save the imgArr in 
    byte[] imgArr= new byte[fileInfo.Length]; 

    // Load a filestream and put its content into the byte[] 

    using (FileStream fs = fileInfo.OpenRead()) 
    { 
     fs.Read(imgArr, 0, imgArr.Length); 
    }