Exemple #1
0
        private void render()
        {
            if (LSTB_Files.SelectedItem == null || String.IsNullOrWhiteSpace(LSTB_Files.SelectedItem.ToString()))
            {
                return;
            }

            Bitmap bmp = new Bitmap(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LSTB_Files.SelectedItem.ToString()));

            int depth = int.Parse(CMBX_GrayScale.SelectedItem.ToString());

            GrayScaleConverter.ConvertionMethod method    = (GrayScaleConverter.ConvertionMethod)Enum.Parse(typeof(GrayScaleConverter.ConvertionMethod), CMBX_Method.SelectedItem.ToString());
            GrayScaleConverter.DitheringMethod  dithering = (GrayScaleConverter.DitheringMethod)Enum.Parse(typeof(GrayScaleConverter.DitheringMethod), CMBX_Dithering.SelectedItem.ToString());
            bool serpentine = CHKB_Serpentine.Checked;


            byte[] grayData = GrayScaleConverter.FromBitmap(bmp, method, dithering, serpentine, depth);

            Bitmap grayBmp = GrayScaleConverter.GrayToBitmap(grayData, bmp.Width, bmp.Height, depth);

            PCBX_Output.Image = grayBmp;
        }
        private void loadImage(string path)
        {
            //Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "mlp.png")
            Bitmap bmp = new Bitmap(path);

            Bitmap bmpResized = new Bitmap(bmp, 800, 601);


            int depth = 8;

            GrayScaleConverter.ConvertionMethod method    = GrayScaleConverter.ConvertionMethod.DecompositionMax;
            GrayScaleConverter.DitheringMethod  dithering = GrayScaleConverter.DitheringMethod.Atkinson;
            bool serpentine = false;


            grayData = GrayScaleConverter.FromBitmap(bmpResized, method, dithering, serpentine, depth);

            Bitmap grayBmp = GrayScaleConverter.GrayToBitmap(grayData, bmpResized.Width, bmpResized.Height, depth);

            grayData = GrayScaleConverter.ReverseGrayScale(grayData, depth);

            imgPreview.Source = bitmapToImageSource(grayBmp);
        }
Exemple #3
0
        private void button1_Click_1(object sender, EventArgs e)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();
            Bitmap bmp = new Bitmap(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LSTB_Files.SelectedItem.ToString()));

            Bitmap newImage = new Bitmap(800, 600);

            using (Graphics gr = Graphics.FromImage(newImage))
            {
                gr.SmoothingMode     = SmoothingMode.HighQuality;
                gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
                gr.PixelOffsetMode   = PixelOffsetMode.HighQuality;
                gr.DrawImage(bmp, new Rectangle(0, 0, 800, 600));

                gr.Save();
            }

            GrayScaleConverter.ConvertionMethod method    = (GrayScaleConverter.ConvertionMethod)Enum.Parse(typeof(GrayScaleConverter.ConvertionMethod), CMBX_Method.SelectedItem.ToString());
            GrayScaleConverter.DitheringMethod  dithering = (GrayScaleConverter.DitheringMethod)Enum.Parse(typeof(GrayScaleConverter.DitheringMethod), CMBX_Dithering.SelectedItem.ToString());
            sw.Stop();

            long phase1ms = sw.ElapsedMilliseconds;

            List <Tuple <long, long, long> > timing = new List <Tuple <long, long, long> >();

            for (int i = 0; i < 10; i++)
            {
                sw.Restart();

                byte[] grayData = GrayScaleConverter.ConvertToGrayscale(newImage, method, 8);
                sw.Stop();

                long grayms = sw.ElapsedMilliseconds;

                sw.Restart();

                grayData = GrayScaleConverter.DitherSierraLight(grayData, 8, newImage.Width, newImage.Height);

                sw.Stop();
                long diterms = sw.ElapsedMilliseconds;

                sw.Restart();

                byte[] output = new byte[(int)Math.Ceiling(grayData.Length / 2.0)];

                int counter = 0;

                for (int j = 0; j < grayData.Length; j += 2)
                {
                    output[counter] = (byte)(grayData[j] << 4 | grayData[j + 1]);

                    counter++;
                }

                grayData = output;

                sw.Stop();

                long compressms = sw.ElapsedMilliseconds;



                timing.Add(new Tuple <long, long, long>(grayms, compressms, diterms));
            }

            MessageBox.Show("Phase 1 : " + phase1ms + "ms " + Environment.NewLine +
                            "Phase gray : min : " + timing.Select(item => item.Item1).Min() + "ms | max : " + timing.Select(item => item.Item1).Max() + "ms | avg : " + timing.Select(item => item.Item1).Average() + "ms" + Environment.NewLine +
                            "Phase compress : min : " + timing.Select(item => item.Item2).Min() + "ms | max : " + timing.Select(item => item.Item2).Max() + "ms | avg : " + timing.Select(item => item.Item2).Average() + "ms" + Environment.NewLine +
                            "Phase diter : min : " + timing.Select(item => item.Item3).Min() + "ms | max : " + timing.Select(item => item.Item3).Max() + "ms | avg : " + timing.Select(item => item.Item3).Average() + "ms"


                            );
        }