首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件流读取图像时翻转-90

从文件流读取图像时翻转-90
EN

Stack Overflow用户
提问于 2013-12-18 02:04:19
回答 1查看 102关注 0票数 0

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

知道为什么吗?这种情况只发生在大图像上。

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

请帮帮忙。以下是代码。

-在模型端

代码语言:javascript
复制
public BitmapImage DisplayImage
{
    get
    {
        if (!string.IsNullOrWhiteSpace(FileName))
        {
            var b = new BitmapImage();
            b.SetSource(System.IO.File.OpenRead(FileName));                     
            return b;
        }
        return null;
    }
}

-在Silverlight视图端

代码语言:javascript
复制
<Image Source="{Binding DisplayImage, Mode=TwoWay}" Width="450" Height="250" Margin="0,0,0,0"/>

调试时看到的内容

EN

回答 1

Stack Overflow用户

发布于 2013-12-18 03:17:28

BMPnormally stored "upside-down",像素从下到上的顺序是相反的,但是可以在文件头中使用负的高度来指示图像是从上到下存储的,所以您可能会有这样的图像。

这是发生在所有图像上,还是只发生在这一张图像上?

您可以尝试更改图像的加载方式,在构造函数中使用Uri,而不是使用Stream调用SetSource(),因为它可能会以不同的方式说明标题和读取文件:

代码语言:javascript
复制
var b = new BitmapImage(new Uri(FileName));                    
return b;

或者,如果这不起作用,您可以使用apply a transform来翻转每个图像,但这并不能解决根本问题:

代码语言:javascript
复制
<Image Source="{Binding DisplayImage, Mode=TwoWay}" Width="450" Height="250" Margin="0,0,0,0">
    <Image.RenderTransform>
        <ScaleTransform ScaleY="-1" />
    </Image.RenderTransform>
</Image>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20641515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档