Сохранение изображения из Form (Visual Studio) в БД (Access)
Загрузку изображения в form выполняю через следующий код:
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Image Files(*.BMP;*.JPG;*GIF;*.PNG)|*.BMP;*.JPG;*GIF;*.PNG|All files (*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
try
{
pictureBox1.Image = new Bitmap(ofd.FileName);
}
catch
{
MessageBox.Show("Невозможно открыть выбранный файл", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Скорей всего для данного действия нужны доп. библиотеки. Обычно данные (текстовые) передаю через запрос INSERT INTRO, как здесь верно оформить, не представляю. Заранее спасибо за помощь!
Ответы (1 шт):
Автор решения: Yotic
→ Ссылка
- Проблема в том, что OpenFileDialog должен утилизироваться, в вашем же случае этого не происходит.
- В вашем случае нужно использовать StringBase64.
using(OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "Image Files(*.BMP;*.JPG;*GIF;*.PNG)|*.BMP;*.JPG;*GIF;*.PNG|All files (*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
try
{
Image image = new Bitmap(ofd.FileName);
using (MemoryStream m = new MemoryStream())
{
image.Save(m, image.RawFormat);
string stringToSave = Convert.ToBase64String(m.ToArray());
}
}
catch
{
MessageBox.Show("Невозможно открыть выбранный файл", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Вы будете сохранять В ДБ, не изображение, а строку. Чтобы её конвертировать обратно используйте:
Image image = Image.FromStream(new MemoryStream(Convert.FromBase64String(stringToConvert)));