2017-09-02 2 views
0

j'utilise automapper lib, pour l'image de converti à l'octet [] et byte [] à l'image dans les modèlespourquoi a lancé une exception de type 'System.ArgumentException'

m.CreateMap<Image, byte[]>().ConvertUsing<ImageToByteResolver>(); 
m.CreateMap<byte[], Image>().ConvertUsing<ByteToImageResolver>(); 

quand je récupérer les données automapper convertissent octet [] données à l'image, mais l'erreur est produite dans les données de convertir

public class ByteToImageResolver : ITypeConverter<byte[],Image> 
{ 
    public Image Convert(byte[] source, Image destination, ResolutionContext context) 
    { 
     using (var memStream = new System.IO.MemoryStream(source)) 
     { 
      using (var bitmap = Bitmap.FromStream(memStream)) 
      { 
       return (Image)bitmap; 
      } 
     } 
    } 
} 

Modifier

Voici l'erreur quand je récupérer les données

Mais lors de la conversion byte[] à image l'erreur ne se produit pas

+0

S'il vous plaît poster la trace toute la pile d'exception et message d'exception. – Dai

+0

Je suppose que vous obtenez une exception d'argument GDI dans le constructeur 'Bitmap.FromStream', ce qui signifie que vous ne chargez pas un fichier image correctement, ou que vous chargez un type d'image que GDI ne prend pas en charge. – Dai

+0

Au moment où votre méthode revient, le 'using 'le plus interne est quitté et vous disposez' bitmap' – pinkfloydx33

Répondre

2

Je résolus mon problème avec le code changement converti comme ceci:

public Image Convert(byte[] source, Image destination, ResolutionContext context) 
{    
    using (var memStream = new System.IO.MemoryStream(source)) 
    using (var bitmap = Bitmap.FromStream(memStream)) 
    {      
     var img = (Image)bitmap; 
     return (Image)img.Clone(); 
    } 
}