expo-image-picker 57.0.7 → 57.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/android/build.gradle +2 -2
  3. package/expo-module.config.json +1 -1
  4. package/ios/ExpoImagePicker.podspec +11 -0
  5. package/ios/ImageUtils.swift +25 -15
  6. package/ios/MediaHandler.swift +11 -3
  7. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7.module → 57.0.9/expo.modules.imagepicker-57.0.9.module} +7 -7
  8. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.9/expo.modules.imagepicker-57.0.9.module.md5 +1 -0
  9. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.9/expo.modules.imagepicker-57.0.9.module.sha1 +1 -0
  10. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.9/expo.modules.imagepicker-57.0.9.module.sha256 +1 -0
  11. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.9/expo.modules.imagepicker-57.0.9.module.sha512 +1 -0
  12. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7.pom → 57.0.9/expo.modules.imagepicker-57.0.9.pom} +1 -1
  13. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.9/expo.modules.imagepicker-57.0.9.pom.md5 +1 -0
  14. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.9/expo.modules.imagepicker-57.0.9.pom.sha1 +1 -0
  15. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.9/expo.modules.imagepicker-57.0.9.pom.sha256 +1 -0
  16. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.9/expo.modules.imagepicker-57.0.9.pom.sha512 +1 -0
  17. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/maven-metadata.xml +4 -4
  18. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/maven-metadata.xml.md5 +1 -1
  19. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/maven-metadata.xml.sha1 +1 -1
  20. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/maven-metadata.xml.sha256 +1 -1
  21. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/maven-metadata.xml.sha512 +1 -1
  22. package/package.json +3 -3
  23. package/spm.config.json +1 -0
  24. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.7/expo.modules.imagepicker-57.0.7.module.md5 +0 -1
  25. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.7/expo.modules.imagepicker-57.0.7.module.sha1 +0 -1
  26. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.7/expo.modules.imagepicker-57.0.7.module.sha256 +0 -1
  27. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.7/expo.modules.imagepicker-57.0.7.module.sha512 +0 -1
  28. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.7/expo.modules.imagepicker-57.0.7.pom.md5 +0 -1
  29. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.7/expo.modules.imagepicker-57.0.7.pom.sha1 +0 -1
  30. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.7/expo.modules.imagepicker-57.0.7.pom.sha256 +0 -1
  31. package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/57.0.7/expo.modules.imagepicker-57.0.7.pom.sha512 +0 -1
  32. /package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7-sources.jar → 57.0.9/expo.modules.imagepicker-57.0.9-sources.jar} +0 -0
  33. /package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7-sources.jar.md5 → 57.0.9/expo.modules.imagepicker-57.0.9-sources.jar.md5} +0 -0
  34. /package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7-sources.jar.sha1 → 57.0.9/expo.modules.imagepicker-57.0.9-sources.jar.sha1} +0 -0
  35. /package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7-sources.jar.sha256 → 57.0.9/expo.modules.imagepicker-57.0.9-sources.jar.sha256} +0 -0
  36. /package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7-sources.jar.sha512 → 57.0.9/expo.modules.imagepicker-57.0.9-sources.jar.sha512} +0 -0
  37. /package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7.aar → 57.0.9/expo.modules.imagepicker-57.0.9.aar} +0 -0
  38. /package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7.aar.md5 → 57.0.9/expo.modules.imagepicker-57.0.9.aar.md5} +0 -0
  39. /package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7.aar.sha1 → 57.0.9/expo.modules.imagepicker-57.0.9.aar.sha1} +0 -0
  40. /package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7.aar.sha256 → 57.0.9/expo.modules.imagepicker-57.0.9.aar.sha256} +0 -0
  41. /package/local-maven-repo/host/exp/exponent/expo.modules.imagepicker/{57.0.7/expo.modules.imagepicker-57.0.7.aar.sha512 → 57.0.9/expo.modules.imagepicker-57.0.9.aar.sha512} +0 -0
package/CHANGELOG.md CHANGED
@@ -10,6 +10,18 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 57.0.9 — 2026-08-10
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [iOS] Fix `base64` returning original (non-JPEG) image data when `allowsEditing` is `false`. ([#48005](https://github.com/expo/expo/pull/48005) by [@barthap](https://github.com/barthap))
18
+
19
+ ## 57.0.8 — 2026-08-06
20
+
21
+ ### 🐛 Bug fixes
22
+
23
+ - [iOS] Fix a failed crop resolving with the uncropped original image instead of rejecting when `allowsEditing` is `true`. ([#48524](https://github.com/expo/expo/issues/48524) by [@aashishshrestha5532](https://github.com/aashishshrestha5532), [#48541](https://github.com/expo/expo/pull/48541) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
24
+
13
25
  ## 57.0.7 — 2026-07-29
14
26
 
15
27
  _This version does not introduce any user-facing changes._
@@ -4,13 +4,13 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'host.exp.exponent'
7
- version = '57.0.7'
7
+ version = '57.0.9'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.imagepicker"
11
11
  defaultConfig {
12
12
  versionCode 22
13
- versionName "57.0.7"
13
+ versionName "57.0.9"
14
14
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
15
15
  }
16
16
  testOptions {
@@ -8,7 +8,7 @@
8
8
  "publication": {
9
9
  "groupId": "host.exp.exponent",
10
10
  "artifactId": "expo.modules.imagepicker",
11
- "version": "57.0.7",
11
+ "version": "57.0.9",
12
12
  "repository": "local-maven-repo"
13
13
  }
14
14
  }
@@ -20,8 +20,19 @@ Pod::Spec.new do |s|
20
20
  s.dependency 'ExpoModulesCore'
21
21
 
22
22
  s.source_files = "**/*.{h,m,swift}"
23
+ s.exclude_files = "Tests/"
23
24
  s.pod_target_xcconfig = {
24
25
  'DEFINES_MODULE' => 'YES',
25
26
  'SWIFT_COMPILATION_MODE' => 'wholemodule'
26
27
  }
28
+
29
+ s.test_spec 'Tests' do |test_spec|
30
+ test_spec.dependency 'ExpoModulesTestCore'
31
+
32
+ test_spec.source_files = 'Tests/**/*.{m,swift}'
33
+
34
+ test_spec.pod_target_xcconfig = {
35
+ 'OTHER_LDFLAGS' => '$(inherited) -lc++'
36
+ }
37
+ end
27
38
  end
@@ -40,9 +40,11 @@ internal struct ImageUtils {
40
40
  return nil
41
41
  }
42
42
 
43
- if shouldReadCroppedImage,
44
- let cropRect = mediaInfo[.cropRect] as? CGRect,
45
- let cropped = ImageUtils.crop(image: originalImage, to: cropRect) {
43
+ if shouldReadCroppedImage {
44
+ guard let cropRect = mediaInfo[.cropRect] as? CGRect,
45
+ let cropped = ImageUtils.crop(image: originalImage, to: cropRect) else {
46
+ return nil
47
+ }
46
48
  // Crop first (rect is defined in the original pixel space), then rotate.
47
49
  return cropped.fixOrientation()
48
50
  }
@@ -194,23 +196,31 @@ internal struct ImageUtils {
194
196
  orFileUrl fileUrl: URL,
195
197
  tryReadingFile: Bool
196
198
  ) throws -> String? {
197
- let sourceImage: UIImage
198
199
  if tryReadingFile {
199
- do {
200
- let data = try Data(contentsOf: fileUrl)
201
- guard let loaded = UIImage(data: data) else {
202
- throw FailedToReadImageDataException()
203
- }
204
- sourceImage = loaded
205
- } catch {
200
+ return try readJpegBase64From(fileUrl: fileUrl, compressionQuality: compressionQuality)
201
+ }
202
+ return try readJpegBase64From(image: image, compressionQuality: compressionQuality)
203
+ }
204
+
205
+ // Decodes the file at `fileUrl` and re-encodes it as JPEG, so base64 output is always JPEG
206
+ // regardless of the source file's original format (e.g. HEIC, PNG).
207
+ static func readJpegBase64From(fileUrl: URL, compressionQuality: Double) throws -> String? {
208
+ let sourceImage: UIImage
209
+ do {
210
+ let data = try Data(contentsOf: fileUrl)
211
+ guard let loaded = UIImage(data: data) else {
206
212
  throw FailedToReadImageDataException()
207
- .causedBy(error)
208
213
  }
209
- } else {
210
- sourceImage = image
214
+ sourceImage = loaded
215
+ } catch {
216
+ throw FailedToReadImageDataException()
217
+ .causedBy(error)
211
218
  }
219
+ return try readJpegBase64From(image: sourceImage, compressionQuality: compressionQuality)
220
+ }
212
221
 
213
- guard let jpegData = sourceImage.jpegData(compressionQuality: compressionQuality) else {
222
+ static func readJpegBase64From(image: UIImage, compressionQuality: Double) throws -> String? {
223
+ guard let jpegData = image.jpegData(compressionQuality: compressionQuality) else {
214
224
  throw FailedToReadImageDataForBase64Exception()
215
225
  }
216
226
  return jpegData.base64EncodedString()
@@ -156,11 +156,15 @@ internal struct MediaHandler {
156
156
 
157
157
  // Conditionally read raw data only if needed to avoid unnecessary I/O
158
158
  var rawData: Data?
159
- if options.base64 || options.exif {
159
+ if options.exif {
160
160
  rawData = try? Data(contentsOf: cachedUrl)
161
161
  }
162
162
 
163
- let base64 = options.base64 ? rawData?.base64EncodedString() : nil
163
+ // Always export base64 as JPEG, matching the `allowsEditing` path, so callers get a
164
+ // consistent format regardless of the source file (e.g. HEIC).
165
+ let base64 = options.base64
166
+ ? try? ImageUtils.readJpegBase64From(fileUrl: cachedUrl, compressionQuality: options.quality)
167
+ : nil
164
168
  let exif = options.exif ? (rawData.flatMap { ImageUtils.readExifFrom(data: $0) }) : nil
165
169
 
166
170
  return AssetInfo(
@@ -200,7 +204,11 @@ internal struct MediaHandler {
200
204
 
201
205
  // We need to get EXIF from original image data, as it is being lost in UIImage
202
206
  let exif = options.exif ? ImageUtils.readExifFrom(data: rawData) : nil
203
- let base64 = options.base64 ? imageData?.base64EncodedString() : nil
207
+ // Always export base64 as JPEG, matching the `allowsEditing` path, so callers get a
208
+ // consistent format regardless of the source file (e.g. HEIC).
209
+ let base64 = options.base64
210
+ ? try ImageUtils.readJpegBase64From(image: image, compressionQuality: options.quality)
211
+ : nil
204
212
 
205
213
  let size = CGSize(width: image.size.width, height: image.size.height)
206
214
 
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "host.exp.exponent",
5
5
  "module": "expo.modules.imagepicker",
6
- "version": "57.0.7",
6
+ "version": "57.0.9",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.imagepicker-57.0.7.aar",
28
- "url": "expo.modules.imagepicker-57.0.7.aar",
27
+ "name": "expo.modules.imagepicker-57.0.9.aar",
28
+ "url": "expo.modules.imagepicker-57.0.9.aar",
29
29
  "size": 163859,
30
30
  "sha512": "0bdd49281c9f26074fc9c5fd19ab8657b9cf7f21fb34d627c559bf030110f151d6eb3e377537c4e151c510a0418454fde2a42e31246691e941732c3979eb2a25",
31
31
  "sha256": "40751a28d2a163a3da2d50f47298caf2c77acb92bc240db9731e80b1ef17b6ab",
@@ -116,8 +116,8 @@
116
116
  ],
117
117
  "files": [
118
118
  {
119
- "name": "expo.modules.imagepicker-57.0.7.aar",
120
- "url": "expo.modules.imagepicker-57.0.7.aar",
119
+ "name": "expo.modules.imagepicker-57.0.9.aar",
120
+ "url": "expo.modules.imagepicker-57.0.9.aar",
121
121
  "size": 163859,
122
122
  "sha512": "0bdd49281c9f26074fc9c5fd19ab8657b9cf7f21fb34d627c559bf030110f151d6eb3e377537c4e151c510a0418454fde2a42e31246691e941732c3979eb2a25",
123
123
  "sha256": "40751a28d2a163a3da2d50f47298caf2c77acb92bc240db9731e80b1ef17b6ab",
@@ -136,8 +136,8 @@
136
136
  },
137
137
  "files": [
138
138
  {
139
- "name": "expo.modules.imagepicker-57.0.7-sources.jar",
140
- "url": "expo.modules.imagepicker-57.0.7-sources.jar",
139
+ "name": "expo.modules.imagepicker-57.0.9-sources.jar",
140
+ "url": "expo.modules.imagepicker-57.0.9-sources.jar",
141
141
  "size": 25135,
142
142
  "sha512": "da0b109c6c9642027b32caf9a88d88fd1e9d767bdc16e7a2efac95b79a368c919c2a2aa7cc290dd5773904d6083a10f44c94d6556f8c2efe117ef33daf769fd0",
143
143
  "sha256": "d792d28babec3ba84b947476d855bcf862fca02162215c0d1190647660fff573",
@@ -0,0 +1 @@
1
+ 645068a21c27332393d0622a5be2db54064949d34652137f4c9c28c28b6f07c1
@@ -0,0 +1 @@
1
+ ef9539e33d6df74073f43c194628019bfd9a14072364d3428092e358b0cd4a524fe53405fda77c59178df148ddb19dc96e9745b604dc56f5e57db104f4e2605c
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>host.exp.exponent</groupId>
11
11
  <artifactId>expo.modules.imagepicker</artifactId>
12
- <version>57.0.7</version>
12
+ <version>57.0.9</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.imagepicker</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ b7ea63d52e6a35b25c0513f52b16dd566055d9ca4bc611096ae4bf12c1ea9c3e
@@ -0,0 +1 @@
1
+ ac4b8f185d812b5920bbd82fe8e69f4781d4276b70df14edee0634cbed5b4c69835f62db48e09ca4ca9f73f45c94e7bdeb71e4c8b99da7250789e7fdbaac46cd
@@ -3,11 +3,11 @@
3
3
  <groupId>host.exp.exponent</groupId>
4
4
  <artifactId>expo.modules.imagepicker</artifactId>
5
5
  <versioning>
6
- <latest>57.0.7</latest>
7
- <release>57.0.7</release>
6
+ <latest>57.0.9</latest>
7
+ <release>57.0.9</release>
8
8
  <versions>
9
- <version>57.0.7</version>
9
+ <version>57.0.9</version>
10
10
  </versions>
11
- <lastUpdated>20260729192352</lastUpdated>
11
+ <lastUpdated>20260810153633</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- bdfda4af23b74534d8e5bda8281eed00
1
+ cb9362b2210625a6b0ff76414d1265f2
@@ -1 +1 @@
1
- 61dd23974ce4340bd12e6c587df9f68b502f9530
1
+ f4c01cb71eb7ca74ec18d90194ef7258bae34b61
@@ -1 +1 @@
1
- 92d6d4fd3f028ac2f19cf49af9830d3b2c476ea0fec00bf7122a6d2d75de1844
1
+ 0af27e40aa6387b835b25ca47781f861723e690058dc4d5b23274bef703c53ae
@@ -1 +1 @@
1
- d3965183c3289d4c43c1c6b4627d3f19c939cd6ffaa2a846b549b4b4a1ecc79197a17b8c8c6f0fe4fb60ca992b254270cebe022bf723e038723bf2350e3cc92a
1
+ 8de2eed8f1955f4ec5ae4f7a0f880646e703c8d55493744d62f80b9a9df52418df8dfbcadeb5a42a1df0a7ddf48a12f9771f1b8a0d3c328818a0a466d78860e1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-image-picker",
3
- "version": "57.0.7",
3
+ "version": "57.0.9",
4
4
  "description": "Provides access to the system's UI for selecting images and videos from the phone's library or taking a photo with the camera.",
5
5
  "main": "src/ImagePicker.ts",
6
6
  "types": "build/ImagePicker.d.ts",
@@ -33,13 +33,13 @@
33
33
  "@testing-library/react": "^16.3.0",
34
34
  "@testing-library/user-event": "^14.6.1",
35
35
  "@types/node": "^22.14.0",
36
- "expo": "57.0.9",
36
+ "expo": "57.0.12",
37
37
  "expo-module-scripts": "56.0.3"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "expo": "*"
41
41
  },
42
- "gitHead": "ff6a677893d78b02c3adf63f67ba159b926395b0",
42
+ "gitHead": "9a08ef16f8abc1788dec0014612be5eeb5dc03af",
43
43
  "scripts": {
44
44
  "build": "expo-module build",
45
45
  "clean": "expo-module clean",
package/spm.config.json CHANGED
@@ -19,6 +19,7 @@
19
19
  "name": "ExpoImagePicker",
20
20
  "path": "ios",
21
21
  "pattern": "**/*.swift",
22
+ "exclude": ["Tests/**"],
22
23
  "dependencies": [
23
24
  "Hermes",
24
25
  "React",
@@ -1 +0,0 @@
1
- 236d1316fb930e6604ef24426ce9d405507a900646988aa0ef9668dd4931c301
@@ -1 +0,0 @@
1
- 9e7d80497bdd22e820d960d3cb9401d6bc71c726bfca839d762f1b921b382a516d343edcbc4816b7c62cd22695261b28c1cf1aae36393239f6570407b559fe44
@@ -1 +0,0 @@
1
- 717b43eb3d62c73380b41819c807e0a424fb69cd652fc9f11e4112a51ad03085
@@ -1 +0,0 @@
1
- fda2a637942b13fcf3b380cadf2c5c9dac33f523368dc5df5db9ed2719c8d62c560cbd2fb88aafa78934adc0139d8ff61cfb24915c90ed6709f3fecce688a279