private void OpenMenu_Click(object sender, RoutedEventArgs e) { try { var op = new OpenFileDialog { RestoreDirectory = true, InitialDirectory = "C:\\", FilterIndex = 1, Title = "Alegeti poza", Filter = "|*.jpg;*.jpeg;*.png|" + "(*.jpg;*.jpeg)|*.jpg;*.jpeg|" + "(*.png)|*.png" }; if (op.ShowDialog() == true) { Stream imageStreamSource = new FileStream(op.FileName, FileMode.Open, FileAccess.Read, FileShare.Read); //PixelFormat var decoder = new JpegBitmapDecoder(imageStreamSource, BitmapCreateOptions.None, BitmapCacheOption.Default); BitmapSource bitmapSource = decoder.Frames[0]; BmsEngine.Init(bitmapSource); ImgPhoto.Source = _rgbBms = bitmapSource; _rgbValues = BmsEngine.GetRgbData(); } } catch (Exception ex) { MessageBox.Show("Eroare: " + ex.Message, "Efecte poze", MessageBoxButton.OK, MessageBoxImage.Error); } }
private void DesaturateMenu_Click(object sender, RoutedEventArgs e) { try { if (_desaturateBms == null) { var newJpegBytes = BmsEngine.GetRgbData(); for (var i = 0; i < BmsEngine.DataLength; i += 4) { var minRgb = Math.Min(Math.Min(_rgbValues[i + (int)Rgb.Blue], _rgbValues[i + (int)Rgb.Green]), _rgbValues[i + (int)Rgb.Red]); var maxRgb = Math.Max(Math.Max(_rgbValues[i + (int)Rgb.Blue], _rgbValues[i + (int)Rgb.Green]), _rgbValues[i + (int)Rgb.Red]); var desatVal = (byte)((minRgb + maxRgb) / 2); newJpegBytes[i + (int)Rgb.Blue] = desatVal; newJpegBytes[i + (int)Rgb.Green] = desatVal; newJpegBytes[i + (int)Rgb.Red] = desatVal; } _desaturateBms = BmsEngine.CloneBms(newJpegBytes); } ImgPhoto.Source = _desaturateBms; } catch (Exception ex) { MessageBox.Show("Eroare: " + ex.Message, "Efecte poze", MessageBoxButton.OK, MessageBoxImage.Error); } }
private void YellowMenu_Click(object sender, RoutedEventArgs e) { try { if (_yellowBms == null) { var newJpegBytes = BmsEngine.GetRgbData(); for (var i = 0; i < BmsEngine.DataLength; i += 4) { newJpegBytes[i + (int)Rgb.Blue] = 0; //Yellow=R+G; } _yellowBms = BmsEngine.CloneBms(newJpegBytes); } ImgPhoto.Source = _yellowBms; } catch (Exception ex) { MessageBox.Show("Eroare: " + ex.Message, "Efecte poze", MessageBoxButton.OK, MessageBoxImage.Error); } }
private void GrayMenu_Click(object sender, RoutedEventArgs e) { try { if (_grayBms == null) { var newJpegBytes = BmsEngine.GetRgbData(); for (var i = 0; i < BmsEngine.DataLength; i += 4) { var grayVal = 0.114 * _rgbValues[i + (int)Rgb.Blue] + 0.587 * _rgbValues[i + (int)Rgb.Green] + 0.299 * _rgbValues[i + (int)Rgb.Red]; newJpegBytes[i + (int)Rgb.Blue] = (byte)grayVal; //blue newJpegBytes[i + (int)Rgb.Green] = (byte)grayVal; //green newJpegBytes[i + (int)Rgb.Red] = (byte)grayVal; //red } _grayBms = BmsEngine.CloneBms(newJpegBytes); } ImgPhoto.Source = _grayBms; } catch (Exception ex) { MessageBox.Show("Eroare: " + ex.Message, "Efecte poze", MessageBoxButton.OK, MessageBoxImage.Error); } }