/// <summary> /// Test function, to generate the gray level picture /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnGetGrayLevel_Click(object sender, RoutedEventArgs e) { var fileBytes = File.ReadAllBytes(_imageLocation); grayscaleListY.Clear(); grayscaleListU.Clear(); grayscaleListV.Clear(); var sw = Stopwatch.StartNew();//for count time used Bitmap grayScaleBitMap = new Bitmap(_imageLocation); for (int x = 0; x < grayScaleBitMap.Width; x++) { for (int y = 0; y < grayScaleBitMap.Height; y++) { System.Drawing.Color pixelColor = grayScaleBitMap.GetPixel(x, y); int grayscaleY = (int)(ColorSpaceConversion.RgbToY(pixelColor.R, pixelColor.G, pixelColor.B));//convert color to gray int grayscaleU = (int)(ColorSpaceConversion.RgbToU(pixelColor.R, pixelColor.G, pixelColor.B)); int grayscaleV = (int)(ColorSpaceConversion.RgbToV(pixelColor.R, pixelColor.G, pixelColor.B)); grayscaleListY.Add(grayscaleY); grayscaleListU.Add(grayscaleU); grayscaleListV.Add(grayscaleV); System.Drawing.Color newColor = System.Drawing.Color.FromArgb(pixelColor.A, grayscaleY, grayscaleY, grayscaleY); grayScaleBitMap.SetPixel(x, y, newColor); } } BitmapToImageSource(GrayScaleImage, grayScaleBitMap); //render gray image sw.Stop(); grayScaleBitMap.Save(AppDomain.CurrentDomain.BaseDirectory + "grayScaleImage.jpg");//save to LBSWatermarkingWithUI/bin/debug EmbedTime.Text = String.Format("{0}ms", sw.ElapsedMilliseconds); }