0

私はいくつかの Windows Phone 7 アプリを作成しています。私は携帯電話で写真にアクセスするつもりです。携帯電話で写真を撮ります。写真のサイズは 1944x2592 (W x H) です。それから私は使用します

MediaLibrary mediaLibrary = new MediaLibrary();
for (int x = 0; x < mediaLibrary.Pictures.Count; ++x)
{
    Picture pic = mediaLibrary.Pictures[x];
    int w = pic.width;
    int h = pic.height;
    ...

しかし、w が 2592 で h が 1944 であることがわかりました。Width と Height の値が逆になっています。何が起こっているのか誰が教えてくれますか? どうしたの?お返事を楽しみにしています!ありがとうございました。

4

1 に答える 1

0

カメラは電話の向きを検出し、メタデータとして保存します。したがって、高さと幅は常に同じであり、Zune、Picture Viewer、または他のほとんどのプログラムで表示されたときの向きがメタデータから読み取られます。

これを説明し、C#でサンプルコードを提供するリソースを次に示します。特に重要な部分は一番下にあります。これを使用するには、このライブラリが必要になります(そこにも役立つガイドがあります)。

void OnCameraCaptureCompleted(object sender, PhotoResult e)
{
   // figure out the orientation from EXIF data
   e.ChosenPhoto.Position = 0;
   JpegInfo info = ExifReader.ReadJpeg(e.ChosenPhoto, e.OriginalFileName);

   _width = info.Width;
   _height = info.Height;
   _orientation = info.Orientation;

   PostedUri.Text = info.Orientation.ToString();

   switch (info.Orientation)
   {
       case ExifOrientation.TopLeft:
       case ExifOrientation.Undefined:
           _angle = 0;
           break;
       case ExifOrientation.TopRight:
           _angle = 90;
           break;
       case ExifOrientation.BottomRight:
           _angle = 180;
           break;
       case ExifOrientation.BottomLeft:
           _angle = 270;
           break;
   }

   .....

}
于 2013-01-18T05:21:04.033 に答える