Я беру некоторые (jpeg) изображения с камерой и вставляя их в базу данных (как blob). Чтобы вставить их в базу данных, я должен передать изображение в массив байтов.C#: ошибка возникает при попытке сохранить System.Drawing.Image в MemoryStream
Вот небольшой код, который выполняет преобразование в массив байтов:
public static byte[] JpegToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); //PROBLEM IS HERE!
return ms.ToArray();
}
Хотя, я уверен, что образ я прохожу в формате JPEG, «imageIn.Save (...)» выдает ошибку следующим образом:
Вот определение энергосберегающего способа:
public void Save(Stream stream, ImageFormat format);
//
// Summary:
// Saves this System.Drawing.Image to the specified file in the specified format.
//
// Parameters:
// filename:
// A string that contains the name of the file to which to save this System.Drawing.Image.
//
// format:
// The System.Drawing.Imaging.ImageFormat for this System.Drawing.Image.
//
// Exceptions:
// System.ArgumentNullException:
// filename or format is null.
//
// System.Runtime.InteropServices.ExternalException:
// The image was saved with the wrong image format.-or- The image was saved
// to the same file it was created from.
Изображения, которые я извлекаю и передаю функции, никогда не сохраняются в/чтении из файловой системы. После того, как я вставляю изображение в базу данных, я удаляю его. И метод, который я получаю изображения, просто возвращает список System.Drawing.Image (с 4 элементами). В этом нет ничего особенного.
У вас есть идеи, почему это может случиться?
Спасибо за ваше время.
EDIT:
Я могу установить изображения в PictureBox, например:
pictureBox1.Image = imageIn;
picturebox.Refresh();
Но, не может сохранять изображения ни MemoryStream, ни к файловой системе.
Вы уверены, что * imageIn * имеет формат System.Drawing.Imaging.ImageFormat.Jpeg? –
попробуйте сначала преобразовать его в Bitmap, а затем сохранить его в MemoryStream –
Да, я уверен, что он в формате JPEG. Я щекочу это за «if (ImageFormat.Jpeg.Equals (clonedImage.RawFormat))». И, дорогой JericCruz, меня просят вставить их в формате jpeg, поэтому у меня нет роскоши изменить его. – blablabla