将ImageSource转换为BitmapImage - WPF

12 wpf bitmapimage

我正在使用一个生成大型ImageSource的类库,> 3000x3750像素.我想将此ImageSource转换为BitmapImage,以便我可以利用DecodePixelWidth或DecodePixelHeight,而不是每次生成此图像时调整它的大小.

我需要首先为用户显示此图像,并且大多数用户的屏幕分辨率为1024x768,我将此ImageSource绑定到Image控件,但可以注意到它是多么"重".

我怎样才能做到这一点?或者这个案例的最佳解决方案是什么?

谢谢!

小智 21

我知道这是一个旧帖子,但尝试做:

myBitmapImage = myImageSource as BitmapImage;
Run Code Online (Sandbox Code Playgroud)

这很好用.

  • 如果这里的演员表失败了,那就是默默无声.因此,如果`myImageSource`不能被转换为`BitmapImage`,那么`myBitmapImage`将是`null`,我会使用`myBitmapImage =(BitmapImage)myImageSource;`因为如果所有地狱都破坏了它至少会给我一个例外疏松. (3认同)

Nol*_*rin 6

BitmapImage类型继承BitmapSource和最终ImageSource(两者是抽象类)。您需要检查对象的实际类型是什么,即 check object.GetType().Name。如果幸运的话,它实际上可能会返回一个BitmapSource对象,您只需将其强制转换为该类型,然后才能使用它。

  • @Hans:这确实很奇怪……我认为唯一可能的原因是实际类型(实现 ImageSource)是私有的,因此没有公开。只是为了确定:您是否尝试过转换为从 ImageSource 派生的任何类型。(有关列表,请参阅 MSDN。)否则,也许您可​​以告诉我们您正在使用什么库,以便我们可以自己尝试。 (2认同)