2016-08-12 1 views
0

Je programme par WPF (C#) pour le traitement d'image (en emgu cv). Dans mon application, j'ouvre une image à l'aide de ces codes:Redimensionnement d'image indésirable dans Bitmap à ImageSource

OpenFileDialog d = new OpenFileDialog(); 

if(d.ShowDialog() == true) 
{ 
    Bitmap b = new Bitmap(d.FileName); 
    img1.Source = Util.Convert(b); 
} 

-je utiliser les codes ci-dessous pour convertir Bitmap-ImageSource et vice versa:

public static Bitmap ImageSourceToBitmap(ImageSource imageSource) 
{ 
    BitmapSource bitmapSource = (BitmapSource)imageSource; 

    MemoryStream mse = new MemoryStream(); 
    BmpBitmapEncoder encoder = new BmpBitmapEncoder(); 
    encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); 
    encoder.Save(mse); 

    System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(mse); 

    return bitmap; 
} 

public static BitmapImage Convert(Bitmap src) 
{ 
    MemoryStream ms = new MemoryStream(); 
    ((System.Drawing.Bitmap)src).Save(ms, System.Drawing.Imaging.ImageFormat.Png); 

    BitmapImage image = new BitmapImage(); 
    image.BeginInit(); 
    ms.Seek(0, SeekOrigin.Begin); 
    image.StreamSource = ms; 
    image.EndInit(); 
    return image; 
} 

Taille de l'image change (un comportement étrange est s'est produite sur ma conversion) quand je l'utilise à partir d'un bouton. l'événement de code du bouton est:

Image<Gray, byte> im = new Image<Gray, byte>(Util.ImageSourceToBitmap(img1.Source)); 
im._EqualizeHist(); 

img1.Source = Util.Convert(im.Bitmap); 

J'ai également défini stretch = None.

quel est le problème?

Répondre

0

Sur quoi affichez-vous l'image? Cela pourrait vous donner un certain redimensionnement. J'utilise généralement un canevas et une mise à l'échelle afin que mon image soit toujours de la même taille.

Vos conversions me semblent «bizarres». Essayez les méthodes ici: Convert Bitmaps

Puisqu'un BitmapImage est un dérivé d'un BitmapSource cela devrait fonctionner correctement pour vous. Je pense que ce sera aussi plus rapide.

Doug