Как хранить изображения в базе данных SQL на WP7 - PullRequest
3 голосов
/ 06 декабря 2011

Я отчаянно пытаюсь сохранить изображение в базу данных SQL, а затем загрузить его на свой WP.Все интерактивные руководства говорят о том, чтобы преобразовать изображение в байтовый массив, сохранить его и затем загрузить обратно в изображение.

До сих пор я был в состоянии сохранить изображение в байтовый массив, используя:

    public static byte[] ConvertToBytes(Stream photoStream)   
    {   
        byte[] a = new Byte[photoStream.Length];   
        for (int i = 0; i < photoStream.Length; i++)   
        {   
            a[i] = (Byte)photoStream.ReadByte();   
        }   
        return (a);
    } 

Создает массив байтов, который по размеру похож на изображение, которое я сохраняю.

Предлагаемый способ загрузки изображений:

    1 public static BitmapImage ConvertToImage(Byte[] inputBytes)   
    2 {   
    3     MemoryStream stream = new MemoryStream(inputBytes);   
    4     BitmapImage image = new BitmapImage();   
    5     image.SetSource(stream);   
    6     return (image);   
    7 }  

Это не работает.

Я получаю эту ошибку (в строке 5): «Неуказанная ошибка»

Кто-нибудь знает, как это исправить, или может предложить альтернативный метод / код?

Я знаю, что в Интернете есть информация - я могу заверить вас, что я долго и усердно искал метод работы и не мог ничего сделать.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Мне удалось решить эту проблему, используя:

public static byte[] ConvertToBytes(String imageLocation)
    {
        StreamResourceInfo sri = Application.GetResourceStream(new Uri(imageLocation, UriKind.RelativeOrAbsolute));
        BinaryReader binary = new BinaryReader(sri.Stream);

        byte[] imgByteArray = binary.ReadBytes((int)(sri.Stream.Length));

        binary.Close();
        binary.Dispose();
        return imgByteArray;
    }

    public static WriteableBitmap ConvertToImage(Byte[] inputBytes)
    {
        MemoryStream ms = new MemoryStream(inputBytes);
        WriteableBitmap img = new WriteableBitmap(400, 400);

        img.LoadJpeg(ms);

        return (img);
    }

Спасибо за вашу помощь, ребята.

0 голосов
/ 07 декабря 2011

я использовал этот код

  byte[] Arr = Convert.FromBase64String(Im); >> i think you need that steep 
 Stream memStream = new MemoryStream(Arr);

                                    WriteableBitmap wbimg = PictureDecoder.DecodeJpeg(memStream);

                                    image2.Source = wbimg;
                                    image2.Tag = IlbumID;

если это нац работа

попробуй

memStream.Read (Arr ,0, Arr.Length );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...