2016-09-14 3 views
1

Я загружаю изображение с веб-сервера, я хочу повернуть его, если ориентация неправильная. Я видел, как сделать это из растрового изображения на моем телефоне, он принимает имя файла, но ничего не имеет с фактическим растровым изображением. Я использую это, чтобы изменить его размер, но не уверен на вращающейся части.Повернуть растровое изображение Xamarin

public Bitmap resizeAndRotate(Bitmap image, int width, int height) 
{ 
    Bitmap newImage= Bitmap.createScaledBitmap(image, newWidth, newHeight, true); 
    return newImage; 
} 

ответ

2

Вы можете масштабировать и вращать растровое изображение в одном вызове, передавая Android.Graphics.Matrix которые включают в себя как масштаб и поворот в трансформации в Bitmap.CreateBitmap:

public Bitmap resizeAndRotate(Bitmap image, int width, int height) 
{ 
    var matrix = new Matrix(); 
    var scaleWidth = ((float)width)/image.Width; 
    var scaleHeight = ((float)height)/image.Height; 
    matrix.PostRotate(90); 
    matrix.PreScale(scaleWidth, scaleHeight); 
    return Bitmap.CreateBitmap(image, 0, 0, image.Width, image.Height, matrix, true); 
} 
+0

воли, повернуть его только тогда, когда он нуждается в вращающемся? не все это нужно. –

+0

@LarrySeymour Что значит «потребности», вращающиеся? Пример кода '.PostRotate (90);' всегда будет поворачивать растровое изображение, если исходное изображение имеет данные Exif, вы можете условно пропустить это вращение матрицы и только масштабировать изображение. – SushiHangover

+0

с моим приложением я могу сфотографироваться, купить недобросовестно, это в ландшафте. если я возьму его в портрете, он сохранит его в ландшафте, поэтому не все фотографии нужно вращать. сначала я могу вращаться с помощью exif, если моя фотография все еще на телефоне, но я сохраняю изображения поверх своего веб-сервера, а затем при необходимости загружаю их. при использовании exif i padss имя файла в размер и метод rotate, но при вызове из ewerbserver у меня нет этой строки имени файла для использования. как я могу получить данные exif из растрового изображения, которое передается в tp my method? –

Смежные вопросы