2010-11-13 2 views
3

J'essaie de convertir une image en icône. Ma fonction est:Pourquoi Image.Save (Stream, ImageFormat) lève une exception?

private Icon GenerateIcon(int width, int height) 
{ 
    using (Bitmap icon = _backingImage.GetThumbnailImage(width, height,() => false, System.IntPtr.Zero) as Bitmap) 
    using(MemoryStream imgStream = new MemoryStream()) 
    { 
     icon.Save(imgStream, System.Drawing.Imaging.ImageFormat.Icon); 
     return new Icon(imgStream); 
    } 
} 

Mais lorsque le programme appelle la méthode, il jette un ArgumentNullException("encoder") où je vous appelle icon.Save. Je trouve ça bizarre parce que je ne passe pas dans un encodeur, je veux que le framework comprenne ce que l'encodeur devrait être, c'est pourquoi je passe dans un ImageFormat.

Est-ce qu'il n'y a pas d'encodeur pour ImageFormat.Icon, ou y at-il quelque chose que je fais mal?

+0

@abatishchev: voilà comment le [programme orthographique britannique] (http://dictionary.reference.com/browse/programme): p –

+0

Merci, @Matt, et désolé :) – abatishchev

Répondre

4

Il suffit de convertir l'image à l'icône:

Icon myIcon = Icon.FromHandle(((Bitmap)myImage).GetHicon()) 

puis enregistrez-le en utilisant flux:

myIcon.Save(myStream); 

salutations Kate

+1

Merci, SmartK8. Je suis conscient de cela, mais cela ne fonctionne pas dans des scénarios de confiance partielle. –

+0

Ce qui précède fonctionne très bien :) Merci. – TomeeNS

+0

Ceci laisse échapper le pointeur Hicon. –

Questions connexes