mirror of
https://github.com/nextcloud/android.git
synced 2024-11-27 17:46:37 +03:00
- obey exif orientation tag
This commit is contained in:
parent
8d3a956c97
commit
c779c7c6ed
1 changed files with 66 additions and 0 deletions
|
@ -30,7 +30,9 @@ import android.app.Activity;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.graphics.BitmapFactory.Options;
|
import android.graphics.BitmapFactory.Options;
|
||||||
|
import android.graphics.Matrix;
|
||||||
import android.graphics.Point;
|
import android.graphics.Point;
|
||||||
|
import android.media.ExifInterface;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.FragmentStatePagerAdapter;
|
import android.support.v4.app.FragmentStatePagerAdapter;
|
||||||
|
@ -412,9 +414,73 @@ public class PreviewImageFragment extends FileFragment {
|
||||||
Log_OC.e(TAG, "Unexpected error loading " + getFile().getStoragePath(), t);
|
Log_OC.e(TAG, "Unexpected error loading " + getFile().getStoragePath(), t);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
result = rotateImage(result, storagePath);
|
||||||
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Bitmap rotateImage(Bitmap bitmap, String storagePath){
|
||||||
|
Bitmap resultBitmap = bitmap;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ExifInterface exifInterface = new ExifInterface(storagePath);
|
||||||
|
int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
|
||||||
|
|
||||||
|
Matrix matrix = new Matrix();
|
||||||
|
|
||||||
|
// 1: nothing to do
|
||||||
|
|
||||||
|
// 2
|
||||||
|
if (orientation == ExifInterface.ORIENTATION_FLIP_HORIZONTAL)
|
||||||
|
{
|
||||||
|
matrix.postScale(-1.0f, 1.0f);
|
||||||
|
}
|
||||||
|
// 3
|
||||||
|
else if (orientation == ExifInterface.ORIENTATION_ROTATE_180)
|
||||||
|
{
|
||||||
|
matrix.postRotate(180);
|
||||||
|
}
|
||||||
|
// 4
|
||||||
|
else if (orientation == ExifInterface.ORIENTATION_FLIP_VERTICAL)
|
||||||
|
{
|
||||||
|
matrix.postScale(1.0f, -1.0f);
|
||||||
|
}
|
||||||
|
// 5
|
||||||
|
else if (orientation == ExifInterface.ORIENTATION_TRANSPOSE)
|
||||||
|
{
|
||||||
|
matrix.postRotate(-90);
|
||||||
|
matrix.postScale(1.0f, -1.0f);
|
||||||
|
}
|
||||||
|
// 6
|
||||||
|
else if (orientation == ExifInterface.ORIENTATION_ROTATE_90)
|
||||||
|
{
|
||||||
|
matrix.postRotate(90);
|
||||||
|
}
|
||||||
|
// 7
|
||||||
|
else if (orientation == ExifInterface.ORIENTATION_TRANSVERSE)
|
||||||
|
{
|
||||||
|
matrix.postRotate(90);
|
||||||
|
matrix.postScale(1.0f, -1.0f);
|
||||||
|
}
|
||||||
|
// 8
|
||||||
|
else if (orientation == ExifInterface.ORIENTATION_ROTATE_270)
|
||||||
|
{
|
||||||
|
matrix.postRotate(270);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rotate the bitmap
|
||||||
|
resultBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
Log_OC.e(TAG, "Could not rotate the image: " + storagePath);
|
||||||
|
}
|
||||||
|
return resultBitmap;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Bitmap result) {
|
protected void onPostExecute(Bitmap result) {
|
||||||
hideProgressWheel();
|
hideProgressWheel();
|
||||||
|
|
Loading…
Reference in a new issue