В некоторых случаях я получаю эту ошибку. «Параметр недействителен. Трассировка стека в System.Drawing.Bitmap..ctor (поток потока)« Я немного запутался, как он работает для некоторых записей, почему не для других. Любой, пожалуйста, руководство меня, чтобы найти свою ошибку, будет очень полезно ..,Параметр недействителен. Трассировка стека в System.Drawing.Bitmap..ctor (поток потока)
Ниже приведены мои коды.,
private void RefreshImage()
{
if (this.dsPatPhoto.dmDoc.Count <= 0) return;
byte[] patImage = null;
byte[] driverLicImage = null;
foreach (CmData.WrCmDoc.DsCmDoc.dmDocRow row in this.dsPatPhoto.dmDoc)
{
if (!row.IsIDDocTypeNull() &&
row.IDDocType == (short)AppCommonCfg.DocType.PatientDriverLicense)
{
if (!row.IsDocImageNull())
driverLicImage = row.DocImage;
}
else
{
if (!row.IsDocImageNull())
patImage = row.DocImage;
}
}
System.IO.MemoryStream stream;
if (patImage != null && patImage.Length > 0)
{
stream = new System.IO.MemoryStream(patImage, true);
this.ucPictureEditPic.Clear();
this.ucPictureEditPic.Image = new System.Drawing.Bitmap(stream);
}
if (driverLicImage != null && driverLicImage.Length > 0)
{
stream = new System.IO.MemoryStream(driverLicImage, true);
this.ucPictureEditDL.Clear();
this.ucPictureEditDL.Image = new System.Drawing.Bitmap(stream); //Error occurs here.
}
}
Является ли изображение, хранящееся в наборе данных, действительным изображением? Если конструктор не может понять, как структурированы данные байта, он не сможет построить изображение из байтов. Если вы загружаете байты из известного файла и сравниваете его с байтами из набора данных, они совпадают? См. Также [Источник ссылки растрового изображения] (http://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Bitmap.cs,167). – theB
@ theB-Спасибо за ответ. Но я не уверен, что мое изображение недействительно. Если это поврежденное изображение означает, что я могу сделать .., Есть ли способ преобразовать его в действительное изображение. По коду мы можем сделать это возможным? – shobia
Из исходного источника выглядит, что битмап-класс использует GDI + для создания изображений. Существует 7 ошибок GDI, которые могут вызвать конструктор, чтобы вызвать параметр «ArgumentException» 1), 2) Неизвестный формат изображения, 3) Свойство не найдено, 4) Свойство не поддерживается, 5-7) Ассортимент шрифтов.Учитывая описание проблемы, я готов устранить все, кроме # 2. Если вы сохраните данные из набора данных в файл, вы можете открыть этот файл в редакторе изображений? (IE - используйте 'System.IO.File.WriteAllBytes()', чтобы выгрузить массив байтов в файл, когда вы получите исключение.) – theB