У меня есть программа базы данных, которая хранит изображения в SQL DB и считывает их обратно для отображения в приложении WPF. если я использую Jpeg-изображения, он отлично работает, но если я использую PNG-изображения, которые я хотел использовать, чтобы попытаться сохранить прозрачность (которая в любом случае исчезает при хранении), большинство изображений возвращается в коррумпированные.Файл PNG поврежден при чтении с SQL
это изображение, которое было выбрано
я затем сохранить его в БД, и добавить изображение в ListView
тогда, если я закрыть приложение и перезагрузите его, он вытаскивает изображение из db, вы можете увидеть, что он поврежден в списке.
, а затем, когда я его выбором, управление изображения также показывает порочное изображение
я храню изображение в коде с помощью объекта BitmapImage, и использовать это, чтобы установить изображение. source, а также преобразовать его в байт [] для сохранения в поле изображения в базе данных.
я преобразовать BitmapImage в Byte [] с помощью следующей строки
command.Parameters.AddWithValue("@Image", ImageToByteArray(productImage.ProductImage));
и эти функции для преобразования в и из BitmapImage
private static BitmapImage BuildImage(byte[] image)
{
var bitmap = new BitmapImage();
bitmap.BeginInit();
MemoryStream mem = new MemoryStream(image);
bitmap.StreamSource = mem;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
//bitmap.Freeze();
return bitmap;
}
private static byte[] ImageToByteArray(BitmapImage image)
{
byte[] data;
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(image));
using (MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
data = ms.ToArray();
}
return data;
}
прекрасно работает с JPEGS, но потом У меня есть белый фон для изображений.
любая помощь будет очень признательна.
Какой язык программирования и СУБД вы используете? –
Я предлагаю использовать varBinary как тип данных в SQL и поместить его в поток на C# и преобразовать его в String base64;) –
Изображение просто BLOB для SQL Server. Он никак не влияет на данные и не изменяет их, поэтому проблема заключается в том, как вы храните и читаете его ... – gbn