Я программирую WPF (C#) для обработки изображений (в emgu cv). В моем приложении, я открываю изображение, используя следующие коды:Изменение размера нежелательных изображений в растровых изображениях для ImageSource
OpenFileDialog d = new OpenFileDialog();
if(d.ShowDialog() == true)
{
Bitmap b = new Bitmap(d.FileName);
img1.Source = Util.Convert(b);
}
я использую коды ниже, чтобы преобразовать Bitmap
в ImageSource
и наоборот:
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;
}
Размер изображения будет изменен (странное поведение произошел при моем преобразовании), когда я использую его с помощью кнопки. код событие кнопки:
Image<Gray, byte> im = new Image<Gray, byte>(Util.ImageSourceToBitmap(img1.Source));
im._EqualizeHist();
img1.Source = Util.Convert(im.Bitmap);
Я также установил stretch = None
.
В чем проблема?