public void PixelsShouldBeRedOrGreenOrBlue() { BitmapSource bitmapImage; PixelFormat pf = PixelFormats.Bgra32; int imageWidth = 200; int imageHeight = 200; int rawStride = (imageWidth * pf.BitsPerPixel + 7) / 8; byte[] rawImage = new byte[rawStride * imageHeight]; Random rnd = new Random(); rnd.NextBytes(rawImage); bitmapImage = BitmapSource.Create(imageWidth, imageHeight, 96, 96, pf, null, rawImage, rawStride); ImageProcessingLibrary.ImageProcessing proc = new ImageProcessingLibrary.ImageProcessing(); bitmapImage = proc.ToMainColors(bitmapImage); int width = bitmapImage.PixelWidth; int height = bitmapImage.PixelHeight; WriteableBitmap writeableBitmap = new WriteableBitmap(bitmapImage); int stride = width * ((writeableBitmap.Format.BitsPerPixel + 7) / 8); int arraySize = height * stride; byte[] pixels = new byte[arraySize]; writeableBitmap.CopyPixels(pixels, stride, 0); int j = 0; for (int i = 0; i < pixels.Length / 4; ++i) { int red = pixels[j]; int green = pixels[j + 1]; int blue = pixels[j + 2]; Assert.IsTrue((red == 0 || red == 255)); Assert.IsTrue((green == 0 || green == 255)); Assert.IsTrue((blue == 0 || blue == 255)); j += 4; } }
public void ChangeColors(ApplicationViewModel vm) { try { if (vm.ImageIsLoaded) { ImageProcessingLibrary.ImageProcessing processing = new ImageProcessingLibrary.ImageProcessing(); BitmapSource image = processing.ToMainColors(vm.ImageSource); vm.ImageSource = image; vm.Message = $"Success! It took {processing.SecondsElapsedForChangeColors} seconds to change to the main colors"; } } catch (Exception ex) { vm.Message = "An unexpected error has occurred"; log.Error(ex); throw; } }
public void SaveImage(ApplicationViewModel vm) { try { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "JPG|*.jpg|PNG|*.png|BMP|*.bmp"; bool?result = saveFileDialog.ShowDialog(); if (result.GetValueOrDefault()) { ImageProcessingLibrary.ImageProcessing processing = new ImageProcessingLibrary.ImageProcessing(); processing.SaveImage(vm.ImageSource, saveFileDialog.FileName, saveFileDialog.FilterIndex); vm.Message = "Saved"; } } catch (Exception ex) { log.Error(ex); vm.Message = "An unexpected error has occurred"; throw; } }
public void LoadImage(ApplicationViewModel vm) { try { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "JPG|*.jpg|PNG|*.png|BMP|*.bmp"; bool?result = openFileDialog.ShowDialog(); if (result.GetValueOrDefault()) { ImageProcessingLibrary.ImageProcessing processing = new ImageProcessingLibrary.ImageProcessing(); vm.ImageSource = processing.LoadImage(openFileDialog.FileName); vm.Message = "Loaded"; } } catch (Exception ex) { log.Error(ex); vm.Message = "An unexpected error has occurred"; throw; } }