Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从文件流读取图像时,图像会翻转-90_C#_Silverlight_Silverlight 4.0_Filestream - Fatal编程技术网

C# 从文件流读取图像时,图像会翻转-90

C# 从文件流读取图像时,图像会翻转-90,c#,silverlight,silverlight-4.0,filestream,C#,Silverlight,Silverlight 4.0,Filestream,我正在尝试将本地路径中的图像加载到Silverlight图像控件。这是一个浏览器外应用程序。当我使用流加载图像时,它总是上下颠倒 知道为什么吗?这种情况仅适用于大型图像 FileName这里给出了本地文件系统的完整路径,如C:\imageFullPath\image.jpg 请帮忙。下面是代码 ------在模型侧------------------ public BitmapImage DisplayImage { get { if (!string.IsNul

我正在尝试将本地路径中的图像加载到Silverlight图像控件。这是一个浏览器外应用程序。当我使用流加载图像时,它总是上下颠倒

知道为什么吗?这种情况仅适用于大型图像

FileName
这里给出了本地文件系统的完整路径,如
C:\imageFullPath\image.jpg

请帮忙。下面是代码

------在模型侧------------------

public BitmapImage DisplayImage
{
    get
    {
        if (!string.IsNullOrWhiteSpace(FileName))
        {
            var b = new BitmapImage();
            b.SetSource(System.IO.File.OpenRead(FileName));                     
            return b;
        }
        return null;
    }
}
------在Silverlight视图侧------------------------

<Image Source="{Binding DisplayImage, Mode=TwoWay}" Width="450" Height="250" Margin="0,0,0,0"/>

调试时看到的内容

BMP
的像素从下到上的顺序相反,但可以在文件头中使用负高度来指示图像是从上到下存储的,因此您可能有这样的图像

这是发生在所有图像上,还是只发生在那个图像上

您可以尝试更改加载图像的方式,在构造函数中使用
Uri
,而不是使用
流调用
SetSource()
,因为它可能会解释头并以不同的方式读取文件:

var b = new BitmapImage(new Uri(FileName));                    
return b;
或者,如果这没有帮助,您可以翻转每个图像,但这并不能解决根本问题:

<Image Source="{Binding DisplayImage, Mode=TwoWay}" Width="450" Height="250" Margin="0,0,0,0">
    <Image.RenderTransform>
        <ScaleTransform ScaleY="-1" />
    </Image.RenderTransform>
</Image>

感谢您的回复。这种情况只会发生在大图像上,不仅是这个图像,还有每个大图像。我已经尝试了第一种方法var b=new-BitmapImage(新Uri(文件名));但这只是返回空图像。第二个对我来说并不实用,因为我必须在模型方面而不是在xaml中决定所有这些。还有其他想法吗?