从WPF中的图像获取绝对文件路径

时间:2010-04-13 17:09:42

标签: wpf image bitmap

我的xaml中有类似的东西:

<Grid>
    <Image Name="image" Source="../../Images/DefaultImage.png" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></Image>
</Grid>

如何获得(使用我的代码隐藏C#代码)图像源的绝对路径?

3 个答案:

答案 0 :(得分:5)

当从Uri字符串或文件名转换时,ImageConverter会创建一个BitmapDecoder并提取其第一个Frame。通过以下方式获得Uri:

((BitmapFrame)image.Source).Decoder.ToString()

请注意,这通常会返回绝对Uri而不是XAML中找到的原始Uri。如果您需要XAML中的确切原始Uri,它可以在BitmapDecoder的_uri字段中找到,但是您需要反射和提升的代码权限才能访问它,而且您的代码可能在以后的.NET Framework版本中不起作用。

答案 1 :(得分:4)

每次都适合我的方法就是这条简单的线

(YourImage.Source as BitmapImage).UriSource

此外,您可以根据需要使用AbsolutePath或AbsoluteUri of UriSource。

答案 2 :(得分:3)

你可以试试这个:

string path = ((BitmapImage)image.Source).UriSource.AbsolutePath;