about summary refs log tree commit diff
path: root/patches
diff options
context:
space:
mode:
authordan <dan.abramov@gmail.com>2024-11-25 21:08:14 +0000
committerGitHub <noreply@github.com>2024-11-25 21:08:14 +0000
commit61e97d69626b90266a3e43f58d30e5e1333f2bd9 (patch)
tree6f518331e271f6a5acd564dae0731e094f52d60a /patches
parent9d3bdbb2b9df8bbee7fe8ed4df87226b2e498f03 (diff)
downloadvoidsky-61e97d69626b90266a3e43f58d30e5e1333f2bd9.tar.zst
Fix camera orientation on Android (#6729)
Diffstat (limited to 'patches')
-rw-r--r--patches/react-native-image-crop-picker+0.41.2.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/patches/react-native-image-crop-picker+0.41.2.patch b/patches/react-native-image-crop-picker+0.41.2.patch
new file mode 100644
index 000000000..7f1865a5e
--- /dev/null
+++ b/patches/react-native-image-crop-picker+0.41.2.patch
@@ -0,0 +1,39 @@
+diff --git a/node_modules/react-native-image-crop-picker/android/src/main/java/com/reactnative/ivpusic/imagepicker/PickerModule.java b/node_modules/react-native-image-crop-picker/android/src/main/java/com/reactnative/ivpusic/imagepicker/PickerModule.java
+index 5de0845..fa477e7 100644
+--- a/node_modules/react-native-image-crop-picker/android/src/main/java/com/reactnative/ivpusic/imagepicker/PickerModule.java
++++ b/node_modules/react-native-image-crop-picker/android/src/main/java/com/reactnative/ivpusic/imagepicker/PickerModule.java
+@@ -21,6 +21,7 @@ import android.webkit.MimeTypeMap;
+ 
+ import androidx.core.app.ActivityCompat;
+ import androidx.core.content.FileProvider;
++import androidx.exifinterface.media.ExifInterface;
+ 
+ import com.facebook.react.bridge.ActivityEventListener;
+ import com.facebook.react.bridge.Callback;
+@@ -678,6 +679,15 @@ class PickerModule extends ReactContextBaseJavaModule implements ActivityEventLi
+             throw new Exception("Cannot select remote files");
+         }
+         BitmapFactory.Options original = validateImage(path);
++        ExifInterface originalExif = new ExifInterface(path);
++        int orientation = originalExif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
++        boolean invertDimensions = (
++                orientation == ExifInterface.ORIENTATION_ROTATE_90 ||
++                        orientation == ExifInterface.ORIENTATION_ROTATE_270 ||
++                        orientation == ExifInterface.ORIENTATION_TRANSPOSE ||
++                        orientation == ExifInterface.ORIENTATION_TRANSVERSE
++        );
++
+ 
+         // if compression options are provided image will be compressed. If none options is provided,
+         // then original image will be returned
+@@ -687,8 +697,8 @@ class PickerModule extends ReactContextBaseJavaModule implements ActivityEventLi
+         long modificationDate = new File(path).lastModified();
+ 
+         image.putString("path", "file://" + compressedImagePath);
+-        image.putInt("width", options.outWidth);
+-        image.putInt("height", options.outHeight);
++        image.putInt("width", invertDimensions ? options.outHeight : options.outWidth);
++        image.putInt("height", invertDimensions ? options.outWidth : options.outHeight);
+         image.putString("mime", options.outMimeType);
+         image.putInt("size", (int) new File(compressedImagePath).length());
+         image.putString("modificationDate", String.valueOf(modificationDate));