2015-07-30 2 views
0

Как хранить BitmapImage типа ImageSource в базу данных типа изображенияКак хранить источник изображения C# в базе данных?

+2

В большинстве случаев это плохая практика. Почему вместо этого вы не храните путь к изображению? – Raptor

+0

Вы спрашиваете, как хранить данные изображения в базе данных sql? – KnightFox

+0

Сохраните его в поле типа 'blob', если нужно. –

ответ

2

Просто Преобразовать его в массив байтов и определить свой образ в БД, как varbinary(MAX)
Вы можете использовать этот код:

public static Byte[] ConvertToByteFromBitmapImage(BitmapImage bitmapImage) 
{ 
    byte[] data; 
    JpegBitmapEncoder encoder = new JpegBitmapEncoder(); 

    encoder.Frames.Add(BitmapFrame.Create(bitmapImage)); 
    using(MemoryStream ms = new MemoryStream()) 
    { 
     encoder.Save(ms); 
     data = ms.ToArray(); 
    } 

    return data; 
} 

Примечание: Вы можете использовать as просто лить BitmapImage как ImageSource.

0
Stream stream = File.OpenRead("<your filePath>"); 
var buffer = new byte[stream.Length]; 
stream.Read(buffer, 0, (int) stream.Length); 

Теперь вы можете сохранить буфер в колонке с varatinary (MAX) типа данных. Хорошо, если вы храните их в кусках.

+0

Гораздо проще: 'var buffer = File.ReadAllBytes (...);' – Clemens

Смежные вопросы