private void RefImageListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (RefImageListBox.SelectedItem == null) { return; } if (RefImageListBox.SelectedItem.GetType() == typeof(ReferenceImageContainer)) { ReferenceImageContainer ric = (ReferenceImageContainer)RefImageListBox.SelectedItem; if (ric.ImageData != null) { if (ric.Width != m_vm.width2 || ric.Height != m_vm.height2) { m_vm.width2 = (ushort)ric.Width; m_vm.height2 = (ushort)ric.Height; m_vm.bitmap2 = BitmapFactory.New(m_vm.width2, m_vm.height2); } m_imageTool.PostFullGrayscaleImage(ric.ImageData, m_vm.width2, m_vm.height2); m_imageTool.Convert_GrayscaleToColor(m_rangeLower2, m_rangeUpper2); m_imageTool.Download_ColorImage(out m_colorImageData2, m_vm.width2, m_vm.height2); // display the image Int32Rect displayRect = new Int32Rect(0, 0, m_vm.width2, m_vm.height2); m_vm.bitmap2.Lock(); m_vm.bitmap2.WritePixels(displayRect, m_colorImageData2, m_vm.width2 * 4, 0); m_vm.bitmap2.Unlock(); // calculate the image histogram UInt32[] histogram; m_imageTool.GetHistogram_512(out histogram, 16); // build the histogram image and download it to the CPU byte[] histImage; m_imageTool.GetHistogramImage_512(out histImage, m_histogramImageWidth, m_histogramImageHeight, 0); // display the histogram image m_vm.histImage2 = BitmapFactory.New(m_histogramImageWidth, m_histogramImageHeight); Int32Rect histRect = new Int32Rect(0, 0, m_histogramImageWidth, m_histogramImageHeight); m_vm.histImage2.Lock(); m_vm.histImage2.WritePixels(histRect, histImage, m_histogramImageWidth * 4, 0); m_vm.histImage2.Unlock(); HistImage.Source = m_vm.histImage2; } } }
public void ImageFromFileToDatabase() { // Configure open file dialog box Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); dlg.FileName = ""; // Default file name dlg.DefaultExt = ".wgi"; // Default file extension dlg.Filter = "WaveGuide Image (.wgi)|*.wgi"; // Filter files by extension // Show open file dialog box Nullable <bool> result = dlg.ShowDialog(); // Process open file dialog box results if (result == true) { // Open document string filename = dlg.FileName; if (File.Exists(filename)) { byte[] image; ReadImageFromWgiFile(out image, filename); int numbytes = image.Length; ReferenceImageContainer cont = new ReferenceImageContainer(); cont.Width = 1024; cont.Height = 1024; cont.Depth = 2; Buffer.BlockCopy(image, 0, cont.ImageData, 0, numbytes); //cont.ImageData = image; cont.TimeStamp = DateTime.Now; cont.NumBytes = numbytes; bool success = wgDB.InsertReferenceImage(ref cont); if (success) { success = true; } } } }
private void ImageDisplay2_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { Point p = e.GetPosition(ImageDisplay2); int x = (int)(p.X / ImageDisplay2.ActualWidth * 1024.0); int y = (int)(p.Y / ImageDisplay2.ActualHeight * 1024.0); UInt16 val = 0; if (RefImageListBox.SelectedItem != null) { ReferenceImageContainer ric = (ReferenceImageContainer)RefImageListBox.SelectedItem; int index = (y * 1024) + x; val = ric.ImageData[index]; } XPos.Text = x.ToString(); YPos.Text = y.ToString(); PixelValue.Text = val.ToString(); }
private void SavePB_Click(object sender, RoutedEventArgs e) { if (VM.SaveAsFile) { if (VM.Filename.Length == 0) { System.Windows.MessageBox.Show("Filename cannot be empty.", "Enter a Filename", MessageBoxButton.OK, MessageBoxImage.Warning); return; } string path = VM.Location + "\\" + VM.Filename + ".png"; if (File.Exists(path)) { MessageBoxResult result = System.Windows.MessageBox.Show("File already exists. Do you want to OverWrite it?", "File Already Exists", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.No) { return; } } using (FileStream stream = new FileStream(path, FileMode.Create)) { PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(m_bitmap.Clone())); encoder.Save(stream); stream.Close(); } } else { if (VM.Description.Length == 0) { System.Windows.MessageBox.Show("Description cannot be empty for the Reference Image.", "Enter a Description", MessageBoxButton.OK, MessageBoxImage.Warning); return; } // save as reference image in database WaveguideDB wgDB = new WaveguideDB(); ReferenceImageContainer refCont = new ReferenceImageContainer(); refCont.CompressionAlgorithm = GlobalVars.CompressionAlgorithm; refCont.Depth = 2; refCont.Height = m_height; refCont.Width = m_width; refCont.ImageData = m_imageData; refCont.MaxPixelValue = GlobalVars.MaxPixelValue; refCont.NumBytes = m_imageData.Length * 2; refCont.TimeStamp = DateTime.Now; refCont.Description = VM.Description; refCont.Type = VM.Type; bool alreadyExists; bool success = wgDB.ReferenceImageTypeAlreadyExists(VM.Type, out alreadyExists); if (success) { if (!alreadyExists) { success = wgDB.InsertReferenceImage(ref refCont); if (!success) { System.Windows.MessageBox.Show("Failed to insert Reference Image: " + wgDB.GetLastErrorMsg(), "Database Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } } else { string sMessageBoxText = "This reference already exists for: " + VM.Type.ToString() + ". Do you want to replace it?"; string sCaption = "Reference Image Already Exists For This Type"; MessageBoxButton btnMessageBox = MessageBoxButton.YesNo; MessageBoxImage icnMessageBox = MessageBoxImage.Warning; MessageBoxResult rsltMessageBox = System.Windows.MessageBox.Show(sMessageBoxText, sCaption, btnMessageBox, icnMessageBox); switch (rsltMessageBox) { case MessageBoxResult.Yes: // delete the existing reference image success = wgDB.ClearReferenceImageType(VM.Type); if (success) { // insert the new reference image success = wgDB.InsertReferenceImage(ref refCont); if (!success) { System.Windows.MessageBox.Show("Failed to insert Reference Image: " + wgDB.GetLastErrorMsg(), "Database Error", MessageBoxButton.OK, MessageBoxImage.Error); } } else { System.Windows.MessageBox.Show("Failed to clear Reference Image: " + wgDB.GetLastErrorMsg(), "Database Error", MessageBoxButton.OK, MessageBoxImage.Error); } break; case MessageBoxResult.No: // do nothing return; } } } } Close(); }
private void SavePB_Click(object sender, RoutedEventArgs e) { if (VM.SaveAsFile) { if (VM.Filename.Length == 0) { System.Windows.MessageBox.Show("Filename cannot be empty.", "Enter a Filename", MessageBoxButton.OK, MessageBoxImage.Warning); return; } string path = VM.Location + "\\" + VM.Filename + ".png"; if (File.Exists(path)) { MessageBoxResult result = System.Windows.MessageBox.Show("File already exists. Do you want to OverWrite it?", "File Already Exists", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.No) { return; } } using (FileStream stream = new FileStream(path, FileMode.Create)) { PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(m_bitmap.Clone())); encoder.Save(stream); stream.Close(); } } else { if (VM.Description.Length == 0) { System.Windows.MessageBox.Show("Description cannot be empty for the Reference Image.", "Enter a Description", MessageBoxButton.OK, MessageBoxImage.Warning); return; } // save as reference image in database WaveguideDB wgDB = new WaveguideDB(); ReferenceImageContainer refCont = new ReferenceImageContainer(); refCont.CompressionAlgorithm = GlobalVars.CompressionAlgorithm; refCont.Depth = 2; refCont.Height = m_height; refCont.Width = m_width; refCont.ImageData = m_imageData; refCont.MaxPixelValue = GlobalVars.MaxPixelValue; refCont.NumBytes = m_imageData.Length * 2; refCont.TimeStamp = DateTime.Now; refCont.Description = VM.Description; bool success = wgDB.InsertReferenceImage(ref refCont); if (!success) { System.Windows.MessageBox.Show("Failed to insert Reference Image: " + wgDB.GetLastErrorMsg(), "Database Error", MessageBoxButton.OK, MessageBoxImage.Error); } } Close(); }