2011-05-06 18 views
5

Estoy usando el siguiente código para obtener una imagen de la MediaLibrary en el teléfono y cambiar su tamaño. En el emulador funciona bien pero lo está girando -90 grados cuando lo pruebo en un teléfono real.Writeablebitmap.SaveJpeg está girando mi imagen -90 grados

El 4º parámetro para SaveJpeg es la orientación y la información sobre herramientas dice "Este parámetro no se utiliza actualmente con este método. Utilice un valor de 0 como marcador de posición".

Lo mismo sucede si paso 0.1, -1. Parece que en realidad podría implementarse en el teléfono y no en el emulador, pero no sé qué pasar.

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(); 
       } 
      } 
     } 
    } 

También me acabo de dar cuenta de que las imágenes de muestra en el teléfono no están teniendo este problema, solo las que he tomado.

+0

¿Estás viendo en modo retrato o paisaje? parece que no está haciendo nada mal aquí, es solo el modo que espera tomar/ver la imagen. –

+0

Las imágenes se tomaron en modo Retrato y se están viendo en el modo vertical – Tyler

+0

Picture.GetThumbnail() muestra la imagen correctamente, así que es algo con el código anterior – Tyler

Respuesta

2

No creo que los datos EXIF ​​de orientación sean leídos por WP7 (feliz de ser corregido ya que solo he intentado cuando el CTP SDK estaba fuera). Sin embargo, puede girar manualmente su imagen usando this method. Una alternativa, que no he probado, podría ser transformar la rotación de la imagen y rotarla 90 grados. Las rotaciones de transformación pueden ser más rápidas que el desplazamiento manual de todos los píxeles del mapa de bits editable.

Cuestiones relacionadas