Я использую следующий код, чтобы получить изображение из библиотеки MediaLibrary на телефоне и изменить его размер. В эмуляторе он работает нормально, но он поворачивает его на -90 градусов, когда я пробую его на реальном телефоне.
4-й параметр для SaveJpeg - это ориентация, и всплывающая подсказка говорит
«Этот параметр в настоящее время не используется этим методом. Используйте значение 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();
}
}
}
}
Также я только что заметил, что примеры фотографий на телефоне не имеют этой проблемы, только те, которые я сделал.