В GDi + в развернутом приложении произошла общая ошибка, но в Visual Studio ошибки нет - PullRequest
0 голосов
/ 24 июня 2019

Добрый день, как объясняет заголовок, у меня есть PictureBox, когда я просматриваю изображение или снимаю изображение с веб-камеры и отображаю его в окне для картинок, я также копирую это изображение в локальную папку на компьютере. Все работает в Visual Studio, я могу захватить или загрузить изображение и сохранить его в папке. Когда я развертываю это программное обеспечение и устанавливаю его на своем компьютере для разработки или на другом компьютере, оно загружает / захватывает изображение и отображает его в окне Picturebox, но не может сохранить его в локальной папке. Это дает мне ошибку: В GDi + произошла общая ошибка. В чем может быть проблема?

Вот лог-файл:

System.Runtime.InteropServices.ExternalException Общая ошибка произошло в GDI +. на EduXpress.Program. <> c.b__0_0 (Объект отправитель, FirstChanceExceptionEventArgs e) в System.Drawing.Image.Save (Строковое имя файла, кодер ImageCodecInfo, EncoderParameters EncoderParams) в System.Drawing.Image.Save (строковое имя файла, формат ImageFormat) в System.Drawing.Image.Save (имя файла строки) в EduXpress.Students.userControlStudentEnrolmentForm.btnBrowsePicture_Click (Объект отправитель, EventArgs e) в System.Windows.Forms.Control.OnClick (EventArgs e) в DevExpress.XtraEditors.BaseButton.OnClick (EventArgs e) в DevExpress.XtraEditors.BaseButton.OnMouseUp (MouseEventArgs e) в System.Windows.Forms.Control.WmMouseUp (Message & m, MouseButtons кнопка, Int32 клики) в System.Windows.Forms.Control.WndProc (Message & m) в DevExpress.Utils.Controls.ControlBase.WndProc (Message & m) в DevExpress.XtraEditors.BaseControl.WndProc (Сообщение и сообщение) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Message & m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc (Сообщение & m) в System.Windows.Forms.NativeWindow.Callback (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW (MSG & msg)
в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (IntPtr dwComponentID, причина Int32, Int32 pvLoopData) в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner (Int32 причина, контекст ApplicationContext) в System.Windows.Forms.Application.ThreadContext.RunMessageLoop (Int32 причина, контекст ApplicationContext) в System.Windows.Forms.Application.Run (Форма mainForm) в EduXpress.Program.Main ()

Это код:

 XtraOpenFileDialog OpenFile = new XtraOpenFileDialog();
     //   //
        OpenFile.FileName = "";
                   OpenFile.Title = "Photo:";
                  OpenFile.Filter = "Image files: (*.jpg)|*.jpg| 
 (*.jpeg)|*.jpeg|(*.png)|*.png|(*.Gif)|*.Gif|(*.bmp)|*.bmp| All Files 
(*.*)|*.*";
                  DialogResult res = OpenFile.ShowDialog();
                  if (res == DialogResult.OK)
                   {
                       this.pictureStudent.Image = 
 System.Drawing.Image.FromFile(OpenFile.FileName);
                   }
            #endregion
            //resize image
            if (pictureStudent.Image != null)
            {
                using (Bitmap currentImage = pictureStudent.EditValue as 
Bitmap)
                {
                    Bitmap savedImage = new Bitmap(currentImage, 
pictureStudent.ClientSize.Width, pictureStudent.ClientSize.Height);
                    savedImage.Save(txtStudentNumber.Text + ".jpg");
                    pictureStudent.Image = savedImage;
                    //  currentImage.Dispose();

                    //invoke the pictureEdit copy image 
                    //the name can be on of the following values: 

OnClickedLoad; OnClickedSave; OnClickedCut; OnClickedCopy; OnClickedPaste; OnClickedDelete InvokeMenuMethod (GetMenu (pictureStudent), "OnClickedCopy"); // сохранить изображение в буфер обмена

                    //save image from clipboard
                    if (Clipboard.GetDataObject() != null)
                    {
                        IDataObject data = Clipboard.GetDataObject();
                        string destinationDirectory = 
Properties.Settings.Default.StudentsPhotosDirectory;

                        if (destinationDirectory == null)
                        {
                            destinationDirectory = "C:\\Students - 
Photos\\";
                            bool exists = 
System.IO.Directory.Exists("C:\\Students - Photos\\");
                            if (!exists)

System.IO.Directory.CreateDirectory("C:\\Students - Photos\\");
                        }

                        if (data.GetDataPresent(DataFormats.Bitmap))
                        {
                            if (File.Exists(destinationDirectory + "\\" + 
txtStudentNumber.Text + "." + ".jpg"))
                            {

XtraMessageBox.Show(LocRM.GetString("strImageAlreadySaved"));
                            }

                            Image image = 
(Image)data.GetData(DataFormats.Bitmap, true);
                            image.Save(destinationDirectory + "\\" + 
txtStudentNumber.Text + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);


                        }
                        else
                        {

XtraMessageBox.Show(LocRM.GetString("strNoImageClipboard"));
                        }
                    }
                    else
                    {

XtraMessageBox.Show(LocRM.GetString("strClipboardEmpty"));
                    }
...