Добрый день, как объясняет заголовок, у меня есть 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"));
}