Skip to content

Commit 174f609

Browse files
authored
Fix openCamera reported dimensions for portrait photos on Android (#2110)
1 parent 0e208a6 commit 174f609

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

android/src/main/java/com/reactnative/ivpusic/imagepicker/PickerModule.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import androidx.core.app.ActivityCompat;
2323
import androidx.core.content.FileProvider;
24+
import androidx.exifinterface.media.ExifInterface;
2425

2526
import com.facebook.react.bridge.ActivityEventListener;
2627
import com.facebook.react.bridge.Callback;
@@ -678,6 +679,15 @@ private WritableMap getImage(final Activity activity, String path) throws Except
678679
throw new Exception("Cannot select remote files");
679680
}
680681
BitmapFactory.Options original = validateImage(path);
682+
ExifInterface originalExif = new ExifInterface(path);
683+
int orientation = originalExif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
684+
boolean invertDimensions = (
685+
orientation == ExifInterface.ORIENTATION_ROTATE_90 ||
686+
orientation == ExifInterface.ORIENTATION_ROTATE_270 ||
687+
orientation == ExifInterface.ORIENTATION_TRANSPOSE ||
688+
orientation == ExifInterface.ORIENTATION_TRANSVERSE
689+
);
690+
681691

682692
// if compression options are provided image will be compressed. If none options is provided,
683693
// then original image will be returned
@@ -687,8 +697,8 @@ private WritableMap getImage(final Activity activity, String path) throws Except
687697
long modificationDate = new File(path).lastModified();
688698

689699
image.putString("path", "file://" + compressedImagePath);
690-
image.putInt("width", options.outWidth);
691-
image.putInt("height", options.outHeight);
700+
image.putInt("width", invertDimensions ? options.outHeight : options.outWidth);
701+
image.putInt("height", invertDimensions ? options.outWidth : options.outHeight);
692702
image.putString("mime", options.outMimeType);
693703
image.putInt("size", (int) new File(compressedImagePath).length());
694704
image.putString("modificationDate", String.valueOf(modificationDate));

0 commit comments

Comments
 (0)