// получаем данные их БД
// сделав запрос к БД мы получим множество строк в ответе, поэтому мы их записываем в массивы/List
List<byte[]> _imageList = new List<byte[]>(); // изображение в байтах
List<string> _imgFormatList = new List<string>(); // расширения изображений
using (SQLiteConnection Connect = new SQLiteConnection(@"Data Source=C:\TestDB.db; Version=3;"))
{
Connect.Open();
SQLiteCommand Command = new SQLiteCommand
{
Connection = Connect,
CommandText = @"SELECT * FROM [dbTableName] WHERE [image_format] NOT NULL" // выборка записей с заполненной ячейкой формата изображения, можно другой запрос составить
};
SQLiteDataReader sqlReader = Command.ExecuteReader();
byte[] _dbImageByte = null;
string _dbImageFormat = null;
while (sqlReader.Read()) // считываем и вносим в лист все параметры
{
_dbImageByte = (byte[])sqlReader["image"]; // читаем строки с изображениями, которые хранятся в байтовом формате
_imageList.Add(_dbImageByte); // добавляем в List
_dbImageFormat = sqlReader["image_format"].ToString().TrimStart().TrimEnd(); // читаем строки с форматом изображений
_imgFormatList.Add(_dbImageFormat); // добавляем в List
}
Connect.Close();
}
if (_imageList.Count == 0) // если в базе нет записей с изображениями (пустой список), то...
{
return; // завершить работу метода
}
// конвертируем бинарные данные в изображение
byte[] _imageBytes = _imageList[0]; // так как SQLite вернёт список изображений из БД, то из листа берём первое с индексом '0'
MemoryStream ms = new MemoryStream(_imageBytes);
Image _newImg = Image.FromStream(ms);
// сохраняем изоражение на диск
string _imgFormat = _imgFormatList[0]; // получаем расширение текущего изображения хранящееся в БД
string _newImageSaved = @"C:\image-02." + _imgFormat; // задаём путь сохранения и имя нового изображения
if (_imgFormat == "jpeg" || _imgFormat == "jpg") // если расширение равно указанному, то...
_newImg.Save(_newImageSaved, System.Drawing.Imaging.ImageFormat.Jpeg); // задаём указанный формат: ImageFormat
else if (_imgFormat == "png")
_newImg.Save(_newImageSaved, System.Drawing.Imaging.ImageFormat.Png);
else if (_imgFormat == "bmp")
_newImg.Save(_newImageSaved, System.Drawing.Imaging.ImageFormat.Bmp);
else if (_imgFormat == "gif")
_newImg.Save(_newImageSaved, System.Drawing.Imaging.ImageFormat.Gif);
else if (_imgFormat == "ico")
_newImg.Save(_newImageSaved, System.Drawing.Imaging.ImageFormat.Icon);
else if (_imgFormat == "tiff" || _imgFormat == "tif")
_newImg.Save(_newImageSaved, System.Drawing.Imaging.ImageFormat.Tiff);
// и т.д., можно все if заменить на одну строку "_newImg.Save(_newImageSaved)", насколько это правильно сказать не могу, но работает
|