public static BitmapSource CropBitmapSource(BitmapSource source, BitmapSource cropBitmap, CropStyle cropStyle) { switch (cropStyle) { case CropStyle.Shadow: return(source.GetBitmap().ShadowCropBitmap(cropBitmap.GetBitmap()).GetBitmapSource()); case CropStyle.Transparent: return(source.GetBitmap().TransparentCropBitmap(cropBitmap.GetBitmap()).GetBitmapSource()); default: return(source); } }
public static void SaveJPG100(this BitmapSource bmp, string filename) { EncoderParameters encoderParameters = new EncoderParameters(1); encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); bmp.GetBitmap().Save(filename, GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg), encoderParameters); }
/// <summary> /// Сохранение изображения /// </summary> /// <param name="image">Изображение</param> /// <param name="nameNumber">Цифра</param> /// <param name="path">Путь сохранения</param> public async void SaveImage(BitmapSource image, string nameNumber, string path = "temp") { var img = image.GetBitmap(); var mass = new MemoryStream(); using (var files = new FileStream(string.Concat(path, "//", nameNumber, ".png"), FileMode.Create, FileAccess.ReadWrite)) { img.Save(mass, System.Drawing.Imaging.ImageFormat.Png); byte[] matric = mass.ToArray(); await files.WriteAsync(matric, 0, matric.Length); mass.Close(); files.Close(); } }
/// <summary> /// Инвертирует изображение в цвета изображение из БД MNIST (в ч/б) /// </summary> /// <param name="image"></param> /// <returns></returns> public static BitmapSource ConvertToColorMnist(this BitmapSource image) { var img = image.GetBitmap(); Bitmap output = new Bitmap(img.Width, img.Height); for (int j = 0; j < img.Height; j++) { for (int i = 0; i < img.Width; i++) { // получаем (i, j) пиксель var pixel = img.GetPixel(i, j); output.SetPixel(i, j, PixelConvert.Invert(pixel)); } } return(output.BitmapToBitmapSource()); }
public static BitmapSource MakeGrayscale2(this BitmapSource source) { Bitmap c = source.GetBitmap(); Bitmap d = new Bitmap(c.Width, c.Height); for (int i = 0; i < c.Width; i++) { for (int x = 0; x < c.Height; x++) { System.Drawing.Color oc = c.GetPixel(i, x); int grayScale = (int)((oc.R * 0.3) + (oc.G * 0.59) + (oc.B * 0.11)); System.Drawing.Color nc = System.Drawing.Color.FromArgb(oc.A, grayScale, grayScale, grayScale); d.SetPixel(i, x, nc); } } var Source = d.GetBitmapSource(); c.Dispose(); d.Dispose(); return(Source); }
/// <summary> /// Конвертирвоание изображения BitmapSource в CSV строку /// </summary> /// <param name="image">Изображение</param> /// <param name="number">Цифра</param> /// <param name="size">Размер в px</param> /// <returns></returns> public string ConvertToCsv(BitmapSource image, string number, int size) { var sbOutput = new StringBuilder(); var strSeperator = ","; sbOutput.AppendFormat(number + strSeperator); var img = image.GetBitmap(); for (var i = 0; i < size; i++) { for (var j = 0; j < size; j++) { // i j change место var pixel = img.GetPixel(j, i); //pixel = PixelConvert.Invert(pixel); // инвертируем в нужную картинку для БД MNIST var lum = (int)PixelConvert.GetLuminance(pixel.R, pixel.G, pixel.B); sbOutput.AppendFormat(string.Concat(lum, (i == size - 1 && j == size - 1) ? "" : strSeperator)); } } return(sbOutput.ToString()); }
//From: http://stackoverflow.com/questions/2265910/convert-an-image-to-grayscale public static BitmapSource MakeGrayscale(this BitmapSource source) { if (source == null) { return(null); } Bitmap original = source.GetBitmap(); Bitmap newBitmap = new Bitmap(original.Width, original.Height); Graphics g = Graphics.FromImage(newBitmap); //create the grayscale ColorMatrix ColorMatrix colorMatrix = new ColorMatrix( new float[][] { new float[] { .3f, .3f, .3f, 0, 0 }, new float[] { .59f, .59f, .59f, 0, 0 }, new float[] { .11f, .11f, .11f, 0, 0 }, new float[] { 0, 0, 0, 1, 0 }, new float[] { 0, 0, 0, 0, 1 } }); ImageAttributes attributes = new ImageAttributes(); attributes.SetColorMatrix(colorMatrix); g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes); var ReturnSource = newBitmap.GetBitmapSource(); g.Dispose(); original.Dispose(); newBitmap.Dispose(); return(ReturnSource); }