2011-05-06 105 views
5

我正在使用以下代碼從手機上的MediaLibrary中獲取圖片並調整其大小。在模擬器中,它工作正常,但是當我在真實手機上試用時,它旋轉了-90度。Writeablebitmap.SaveJpeg正在旋轉我的圖像-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(); 
       } 
      } 
     } 
    } 

此外,我只是注意到,手機上的示例圖片沒有這個問題,只是我採取了。

+0

你正在以縱向還是橫向模式查看?這聽起來像是在這裏沒有做錯什麼,它只是你期望拍攝/觀看照片的模式。 – 2011-05-06 21:54:19

+0

照片是在肖像模式下拍攝的,正在肖像模式下查看 – Tyler 2011-05-06 22:21:27

+0

Picture.GetThumbnail()正確顯示圖像,所以它與上面的代碼的東西 – Tyler 2011-05-06 22:29:13

回答

2

我不認爲用於定位的EXIF數據是由WP7讀取的(很高興被糾正,因爲我只在CTP SDK出來時才嘗試)。但是,您可以使用this method手動旋轉圖片。另一種我沒有嘗試的方法是獲取圖像的旋轉變換並旋轉90度。變換旋轉可能比手動移動可寫入位圖的所有像素更快。