什么是FromFile和ToFile相当于BitmapImage?

时间:2010-08-06 12:03:54

标签: c# wpf silverlight

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 个答案:

答案 0 :(得分:1)

从MSDN link,使用带有URI或

的ctor重载
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

答案 1 :(得分:1)

浏览器中的Silverlight应用程序无法使用文件名打开文件。您需要使用提升信任的浏览器运行它来执行此操作。

Silverlight没有内置的图像编码,因此您无法获取位图的内容(BTW您需要使用WriteableBitmap才能访问原始图像)。

您可以在Image Tools找到所需内容。