Получить изображение с помощью C # - PullRequest
0 голосов
/ 20 мая 2009
byte[] imageData = null;
long byteSize = 0;
byteSize = _reader.GetBytes(_reader.GetOrdinal(sFieldName), 0, null, 0, 0);

imageData = new byte[byteSize];
long bytesread = 0;
int curpos = 0, chunkSize = 500;
while (bytesread < byteSize)
{
    // chunkSize is an arbitrary application defined value 
    bytesread += _reader.GetBytes(_reader.GetOrdinal(sFieldName), curpos, imageData, curpos, chunkSize);
    curpos += chunkSize;
}

byte[] imgData = imageData;

MemoryStream ms = new MemoryStream(imgData);
Image oImage = Image.FromStream((Stream)ms);
return oImage;

Код создает проблему при выполнении строки "Image oImage = Image.FromStream((Stream)ms);" ..... В этой строке отображается сообщение "Parameter is not valid" ... Почему это происходит? Помоги мне. Я хочу получить изображение из базы данных .... Я работаю над окном C # vs05 ..... Кто-нибудь может мне помочь? byte [] содержит значение. Все работает хорошо, только проблема возникает, когда эта строка выполняется.

Ответы [ 2 ]

1 голос
/ 20 мая 2009

Простой оператор if должен решить вашу проблему перед созданием потока памяти

if (imageData.Length != 0)
{
  MemoryStream ms = new MemoryStream(imageData);
  Image oImage = Image.FromStream((Stream)ms);
  return oImage;
}

return null;
0 голосов
/ 20 мая 2009

Я действительно не могу обнаружить никаких ошибок в этом коде (за исключением того, что MemoryStream не удаляется, и что нет необходимости приводить его к Stream при передаче его методу Image.FromStream; но это не должно вызывать твоя ошибка). Я бы сделал следующее, чтобы попытаться найти ошибку:

  • Запишите байтовые данные в файл и попытайтесь открыть изображение в графической программе (чтобы убедиться, что байтовые данные действительно представляют действительное изображение). Я предполагаю, что это потерпит неудачу.
  • Проверьте код, который записывает данные в базу данных (возможно, выполните тот же прием, что и в предыдущем пункте; запишите его в файл и попытайтесь открыть файл)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...