.net 如何使用WPF在后台加载不同的图像、PNG、GIF和JPG?

.net 如何使用WPF在后台加载不同的图像、PNG、GIF和JPG?,.net,wpf,image,background,.net,Wpf,Image,Background,我正在使用WPF在背景中加载图像,使用 问题是URL字符串可能是PNG、GIF或JPG,我需要使用JpegBitmapDecoder、PngBitmapDecoder或GifBitmapDecoder。如果未使用正确的解码器,则会发生FileFormatException 我可以在字符串上使用扩展名,但如果用户的GIF图像扩展名为.png,则仍可能发生错误 您知道如何解决这个问题吗?您可以二进制读取文件本身的开始部分,并将其与各种文件规范进行比较 我只是检查了一些JPG文件而没有阅读规范,这只是

我正在使用WPF在
背景中加载
图像
,使用

问题是URL字符串可能是PNG、GIF或JPG,我需要使用
JpegBitmapDecoder
PngBitmapDecoder
GifBitmapDecoder
。如果未使用正确的解码器,则会发生
FileFormatException

我可以在字符串上使用扩展名,但如果用户的GIF图像扩展名为.png,则仍可能发生错误


您知道如何解决这个问题吗?

您可以二进制读取文件本身的开始部分,并将其与各种文件规范进行比较

我只是检查了一些JPG文件而没有阅读规范,这只是一个非常基本的匹配模式,因此不值得信任,但作为一个例子(在实际应用中,当然你不应该阅读整个流程):

因此,前2个结果为真,第3个结果为假:

IsJpg "http://www.flatpackrevolution.com/wp-content/uploads/2007/10/pow.jpg" 
IsJpg   "http://bedzine.com/blog/wp-content/uploads/2008/04/4-17-stack-drawers-1-1.jpg"
IsJpg "http://sstatic.net/so/img/logo.png" 

您可以二进制读取文件本身的开始部分,并将其与各种文件规范进行比较

我只是检查了一些JPG文件而没有阅读规范,这只是一个非常基本的匹配模式,因此不值得信任,但作为一个例子(在实际应用中,当然你不应该阅读整个流程):

因此,前2个结果为真,第3个结果为假:

IsJpg "http://www.flatpackrevolution.com/wp-content/uploads/2007/10/pow.jpg" 
IsJpg   "http://bedzine.com/blog/wp-content/uploads/2008/04/4-17-stack-drawers-1-1.jpg"
IsJpg "http://sstatic.net/so/img/logo.png"