Writeablebitmap.SaveJpeg将我的图像旋转-90度

时间:2011-05-06 21:16:25

标签: c# windows-phone-7 windows-phone

我正在使用以下代码从手机上的MediaLibrary中获取图片并调整其大小。在模拟器中它工作正常,但是当我在真正的手机上试用它时它旋转了-90度。

SaveJpeg的第4个参数是方向,工具提示说 “此方法当前不使用此参数。使用值0作为占位符。”

如果我传递0,1,-1也会发生同样的事情。看起来它实际上可能是在手机上而不是在模拟器中实现的,但我不知道该传递什么。

public byte[] GetPhoto(string photoName, int width, int height)
    {
        using (var ml = new Microsoft.Xna.Framework.Media.MediaLibrary())
        {
            using(Stream stream = (from p in ml.Pictures where p.Name == photoName select p).FirstOrDefault().GetImage())
            {
                //load the stream into a WriteableBitmap so it can be resized
                using(MemoryStream outstream = new MemoryStream())
                {
                    PictureDecoder.DecodeJpeg(stream).SaveJpeg(outstream, width, height, 0, 85);
                    return outstream.ToArray();
                }
            }
        }
    }

另外我只是注意到手机上的样本图片没有这个问题,只是我拍摄的那些。

1 个答案:

答案 0 :(得分:2)

我认为WP7不会读取方向的EXIF数据(很高兴能够更正,因为我只在CTP SDK出来时尝试过)。但是,您可以使用this method手动旋转图片。我没有尝试过的另一种方法是将图像旋转变换并将其旋转90度。变换旋转可能比手动移动可写位图的所有像素更快。