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);
        }
Beispiel #3
0
        /// <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();
            }
        }
Beispiel #4
0
        /// <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());
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        /// <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());
        }
Beispiel #7
0
        //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);
        }