Как упоминалось в комментариях @KeithS, трассировка стека показывает, что исключение происходит в методе Image.FromStream
.Вы убедились, что весь код, ведущий к этому вызову, правильно возвращает ожидаемые данные?Путь к файлу должен существовать (или File.ReadAllBytes
вызвал бы исключение), а конструктор MemoryStream
возвращает допустимый поток (или он вызвал бы исключение), но возможно ли, что данные в потоке памяти не 'На самом деле это изображение?
Кроме того, вы можете попробовать использовать метод File.OpenRead
.Это возвращает FileStream
, так что вы можете передать это непосредственно в Image.FromStream
метод.Это будет похоже на следующий код.(Я немного изменил его, чтобы использовать оператор using
и иметь только один оператор возврата.)
public static Bitmap GetLibraryObjectImage(Guid guid)
{
Bitmap bitmap = null;
try
{
string tempPath = GetLibraryObjectImagePath(guid);
if (!String.IsNullOrEmpty(tempPath)
{
using (var stream = File.OpenRead(tempPath))
{
bitmap = (Bitmap)Image.FromStream(stream);
}
}
}
catch
{
bitmap = (Bitmap)Image.FromFile(Application.StartupPath + @"\na.bmp");
}
if (bitmap == null)
{
bitmap = (Bitmap)Image.FromFile(Application.StartupPath + @"\na.bmp");
}
return bitmap;
}