次のコードを使用して、電話の 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();
}
}
}
}
また、電話のサンプル写真にはこの問題がなく、私が撮ったものだけであることに気付きました.