5

次のコードを使用して、電話の 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();
                }
            }
        }
    }

また、電話のサンプル写真にはこの問題がなく、私が撮ったものだけであることに気付きました.

4

1 に答える 1

2

向きの EXIF データが WP7 によって読み取られるとは思いません (CTP SDK がリリースされたときにのみ試したので、訂正してよかったです)。ただし、この方法を使用して画像を手動で回転できます。私が試していない別の方法は、画像の回転変換を取得して 90 度回転させることです。回転を変換すると、書き込み可能なビットマップのすべてのピクセルを手動でシフトするよりも速くなる場合があります。

于 2011-05-07T00:12:54.343 に答える