Что эквивалентно FromFile и ToFile для BitmapImage? - PullRequest
1 голос
/ 06 августа 2010

System.Drawing.Image имеет простые в использовании методы для FromFile и ToFile. Что эквивалентно для Silverlight BitmapImage? Я пытаюсь загрузить и сохранить изображение в формате JPEG в рамках модульного теста. Байты должны совпадать с точно , чтобы он прошел. Вот мое текущее предположение:

    //I am not sure this is right
    private BitmapImage GetImage(string fileName)
    {
        BitmapImage bitmapImage = new System.Windows.Media.Imaging.BitmapImage();
        using (Stream imageStreamSource = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            bitmapImage.BeginInit();
            bitmapImage.StreamSource = imageStreamSource;
            bitmapImage.EndInit();
        }

        return bitmapImage;
    }

    private void SaveImage(BitmapImage bitmapImage, string file)
    {
        //How to do this?
    }

Ответы [ 2 ]

1 голос
/ 06 августа 2010

Приложение Silverlight в браузере не может открыть файл, используя имя файла.Для этого вам потребуется запустить его из браузера с повышенным доверием.

Silverlight не имеет встроенной кодировки изображений, поэтому вы не можете получить содержимое растрового изображения (кстати, вам нужно использоватьWriteableBitmap для доступа к необработанному изображению).

Вы найдете то, что вам нужно, в Инструменты изображения .

1 голос
/ 06 августа 2010

Из MSDN ссылка , используйте перегрузку ctor, которая принимает URI, или

BitmapImage myBitmapImage = new BitmapImage();

// BitmapImage.UriSource must be in a BeginInit/EndInit block
myBitmapImage.BeginInit();
myBitmapImage.UriSource = new Uri(@"C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Water Lilies.jpg");
myBitmapImage.DecodePixelWidth = 200;
myBitmapImage.EndInit();

//set image source
myImage.Source = myBitmapImage;

Чтобы сохранить изображение на диск, вам понадобится специальный кодер, например JpegBitmapEncoder

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...