2013-05-13 2 views
0

Я пытаюсь сохранить изображение на SQL Server, чтобы SSRS мог его прочитать. Мне нужно преобразовать в WriteableBitmap (и, возможно, JPEG?), Поэтому я могу внести изменения в размер изображения перед сохранением. Однако, когда я пытаюсь вытащить преобразованное изображение из SQL Server, он вообще не будет отображаться в SSRS. Что я делаю не так?Преобразование FileStream в WriteableBitmap в JPEG в байт-массив для SSRS

byte[] m_Bytes = ReadToEnd(fileStream); //this works fine 
    WriteableBitmap bmp1 = new WriteableBitmap(166, 166); 
    bmp1.FromByteArray(m_Bytes); //this works fine 

    ExtendedImage image = bmp1.ToImage(); 
    MemoryStream stream = new MemoryStream(); 
    ImageTools.IO.Encoders.AddEncoder<JpegEncoder>(); 
    JpegEncoder encoder = new JpegEncoder(); 
    encoder.Encode(image, stream); 

    BitmapImage img = new BitmapImage(); 
    img.SetSource(stream); 
    WriteableBitmap bmp2 = new WriteableBitmap(img); 


    byte[] buffer1 = bmp2.ToByteArray(); 
    CurrentOrder.CompanyImage = buffer1; //this does save a byte array but it will not render in SSRS. If I set buffer1 to bmp1.ToByteArray() then it works fine but I am still unable to resize it using the resize method in WriteableEx without it not rendering in SSRS. 

Это еще одна попытка в одно и то же, и это не будет оказывать либо:

И это проще и не будет работать:

byte[] m_Bytes = ReadToEnd(fileStream); 
WriteableBitmap bmp1 = new WriteableBitmap(166, 166); 
bmp1.FromByteArray(m_Bytes); 
WriteableBitmap resizedImage = bmp1.Resize(25, 25, WriteableBitmapExtensions.Interpolation.Bilinear); 
byte[] buffer1 = resizedImage.ToByteArray(); 
CurrentOrder.CompanyImage = buffer1; 
+0

Кстати, это в Silverlight. –

ответ

1

Что вы хотите, чтобы изменить размер 166x166 (или 25x25), экспортировать в качестве байта [] и перезагрузить изображение из этого массива байтов?

Вы можете попробовать BitmapImage?

BitmapImage image = new BitmapImage(); 
image.SetSource(fileStream); 

WriteableBitmap bitmap = new WriteableBitmap(image); 
WriteableBitmap resizedBitmap = bitmap.Resize(25, 25, WriteableBitmapExtensions.Interpolation.Bilinear); 

CurrentOrder.CompanyImage = resizedBitmap.ToByteArray(); 
+1

этот WriteableBitmap-конструктор не существует (WinRT) – Rivenfall