2011-05-06 18 views
5

Telefondaki MediaLibrary'den resim almak ve yeniden boyutlandırmak için aşağıdaki kodu kullanıyorum. Emülatörde iyi çalışıyor ama gerçek bir telefonda denediğimde -90 derece dönüyor.Writeablebitmap.SaveJpeg resim -90 derece döndürüyor

SaveJpeg için 4. parametre oryantasyondur ve araç ipucu diyor ki "Bu parametre şu anda bu yöntemle kullanılmıyor. 0 değerini bir yer tutucu olarak kullanın."

0,1 -1 değerini geçmemde aynı şey olur. Telefonda uygulanabilecek gibi görünüyor ve emülatörde değil, ama ne geçeceğimi bilmiyorum.

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

Ayrıca, telefondaki örnek resimlerin bu sorunu çözmediğini fark ettim, sadece aldıklarım.

+0

Dikey veya yatay modda mı görüntülüyorsunuz? Burada yanlış bir şey yapmıyor gibi görünüyor, sadece fotoğrafı çekmeyi/görüntülemeyi beklediğiniz mod. –

+0

Resimler Portre modunda çekildi ve Portre modunda görüntüleniyor – Tyler

+0

Picture.GetThumbnail() görüntüyü doğru görüntüler, öyleyse yukarıdaki kod ile bir şey – Tyler

cevap

2

Yönlendirmenin EXIF ​​verilerinin WP7 tarafından okuntığını sanmıyorum (yalnızca CTP SDK'sı çıktığında denediğim için düzeltildiğim için mutluyum). Ancak, resminizi this method kullanarak manuel olarak döndürebilirsiniz. Denemediğim bir alternatif, resmin dönüşünü elde etmek ve 90 derece döndürmek olabilir. Dönüş dönüşleri, yazılabilir bitmap'in tüm piksellerini manuel olarak kaydırmaya göre daha hızlı çalışabilir.

İlgili konular