Я использую метод SKBitmap.Resize () в SkiaSharp в проекте Xamarin.Forms для изменения размера изображений для отображения. Проблема, с которой я сталкиваюсь, заключается в том, что при фотографировании на iOS, когда фотография делается в портретной ориентации, изображение отображается правой стороной вверх. При фотографировании на Android и импорте из фотогалереи на устройстве Android и iOS ориентация сохраняется, а при съемке фотографии в iOS - нет. Если я не изменяю размер изображения с помощью SkiaSharp (просто отображаю изображение без изменения размера), тогда изображение отображается с правильной ориентацией. Однако это не решение, поскольку необходимо изменить размер изображений. Ниже мой код -
private byte[] GetResizedImageData(string imageName)
{
float resizeFactor = 0.5f;
var filePath = PathUtil.GetImagePath(imageName);
var ogBitmap = SKBitmap.Decode(filePath);
float fWidth = ogBitmap.Width * resizeFactor;
int width = (int) Math.Round(fWidth);
float fHeight = ogBitmap.Height * resizeFactor;
int height = (int) Math.Round(fHeight);
if (height >= 4096 || width >= 4096)
{
width = width * (int)resizeFactor;
height = height * (int)resizeFactor;
}
var scaledBitmap = ogBitmap.Resize(new SKImageInfo( width, height), SKBitmapResizeMethod.Box);
var image = SKImage.FromBitmap(scaledBitmap);
var data = image.Encode(SKEncodedImageFormat.Jpeg, 100);
return data.ToArray();
}
PathUtil.GetImagePath () - это просто помощник для получения зависящих от платформы путей для хранения фотографий.
UIImageOrientation.Right
. На Android все становится действительно беспорядочным, поскольку разные производители иногда устанавливают датчики камеры на 90 градусов по часовой стрелке или против часовой стрелки (Samsumg и LG известны тем, что поворачивают на 90 градусов. , Я даже использовал пару китайских устройств Android, где датчики установлены на 180 градусов, в большинстве случаев это связано с физическими ограничениями производства и упаковки, моралью истории, прочитайте поворот изображения перед применением каких-либо преобразований ...; - ) - person SushiHangover   schedule 25.05.2017SKCodec.Origin
и изSKCodecOrigin
определить соответствующее преобразование, которое вам нужно применить. - person SushiHangover   schedule 25.05.2017