Skip to content

🐛 Don't try using EXIF Orientation when cropping (exiv2-wasm version) - #1828

Closed
gwennlbh wants to merge 5 commits into
mainfrom
fix-exif-orientation
Closed

gwennlbh wants to merge 5 commits into
mainfrom
fix-exif-orientation

Conversation

@gwennlbh

@gwennlbh gwennlbh commented Jun 29, 2026 •

Copy link
Copy Markdown
Member

Fixes #1824
[Thu Jul 2 17:24:31 UTC 2026] Downloading the Android app preview from Diawi:

QR code

https://i.diawi.com/t5wxtD

@gwennlbh
gwennlbh force-pushed the fix-exif-orientation branch 2 times, most recently from f1f3e40 to ee2e65c Compare June 30, 2026 22:29
@gwennlbh
gwennlbh temporarily deployed to 1828: App preview June 30, 2026 22:31 — with GitHub Actions Inactive
@gwennlbh
gwennlbh temporarily deployed to 1828: Android problems report June 30, 2026 22:36 — with GitHub Actions Inactive
@gwennlbh
gwennlbh temporarily deployed to 1828: node_modules analysis June 30, 2026 22:41 — with GitHub Actions Inactive
@gwennlbh
gwennlbh force-pushed the fix-exif-orientation branch from ee2e65c to ef769ca Compare July 1, 2026 11:46
@gwennlbh
gwennlbh temporarily deployed to 1828: App preview July 1, 2026 11:48 — with GitHub Actions Inactive
@gwennlbh
gwennlbh temporarily deployed to 1828: Android problems report July 1, 2026 11:52 — with GitHub Actions Inactive
@gwennlbh
gwennlbh temporarily deployed to 1828: node_modules analysis July 1, 2026 11:53 — with GitHub Actions Inactive
@gwennlbh

gwennlbh commented Jul 1, 2026 •

Copy link
Copy Markdown
Member Author

seems like exiv2-wasm leaks memory (and it did like, open a new file for each tag write anyways so that's pretty inefficient).

long term, it'd be nice to work on https://github.com/cigaleapp/exiv2-wasm and maybe using libraw-wasm's architecture, but I don't have time right now.

also, the wasm wrapper for this library opens & closes (or maybe not? would explain the seeming leaks) for every function call, which is widly inefficient when calling writeString for every EXIF tag we wanna write.

new PR that just uses piexifjs (with its base64 serialization requirement which may be a perofrmance loss too...): #1831

@gwennlbh gwennlbh changed the title 🐛 Don't try using EXIF Orientation when cropping 🐛 Don't try using EXIF Orientation when cropping (exiv2-wasm version) Jul 1, 2026
@gwennlbh

gwennlbh commented Jul 2, 2026

Copy link
Copy Markdown
Member Author

as per previous comment, we wont use exiv2-wasm, for now at least. #1831 will be merged instead.

@gwennlbh gwennlbh closed this Jul 2, 2026
gwennlbh pushed a commit that referenced this pull request Aug 3, 2026
##### [v1.50.0](https://github.com/toss/es-toolkit/blob/HEAD/CHANGELOG.md#Version-v1500)

Released on July 24th, 2026.

- Added the `es-toolkit/types` entrypoint: a declaration-only module of compile-time
  type utilities TypeScript lacks natively — `ValueOf`, `Simplify`, `Writable`,
  `NonEmptyArray`, `DeepPartial`, and `DeepReadonly`. (\[[#1818](toss/es-toolkit#1818)])
- Added `flow` to `es-toolkit/fp`, a reusable data-last composition built on `pipe`. (\[[#1812](toss/es-toolkit#1812)])

The following bring `es-toolkit/compat` closer to Lodash. Behavior for the affected
edge cases now matches Lodash, so results may differ if you relied on the previous output.

- Fixed `compat/intersectionBy` to dedupe a single array (including by the iteratee)
  and to keep results consistent with Lodash. (\[[#1935](toss/es-toolkit#1935)])

- Fixed `compat/findIndex` and `compat/findLastIndex` to coerce a `NaN` `fromIndex`
  to `0` and to convert `fromIndex` to an integer. (\[[#1828](toss/es-toolkit#1828)], \[[#1834](toss/es-toolkit#1834)], \[[#1938](toss/es-toolkit#1938)])

- Fixed `compat/lastIndexOf` to coerce `fromIndex` like Lodash. (\[[#1832](toss/es-toolkit#1832)])

- Fixed `compat/every` to treat a falsy, non-nullish `doesMatch` as a `_.property`
  shorthand instead of identity. (\[[#1940](toss/es-toolkit#1940)])

- Fixed `compat/nth` to support string inputs. (\[[#1833](toss/es-toolkit#1833)])

- Fixed `compat/inRange` to not throw on a lone negative bound. (\[[#1835](toss/es-toolkit#1835)])

- Fixed `compat/toArray` to convert `Set`s to arrays like Lodash. (\[[#1840](toss/es-toolkit#1840)])

- Fixed `compat/values` to treat sparse array holes as `undefined`. (\[[#1894](toss/es-toolkit#1894)])

- Fixed `compat/maxBy` and `compat/minBy` to restore Lodash-compatible comparison. (\[[#1893](toss/es-toolkit#1893)])

- Fixed `compat/includes` to exclude the `length` property when matching array-like values. (\[[#1886](toss/es-toolkit#1886)])

- Fixed the case functions to split ordinal numbers like Lodash, and to count string
  size and padding by code points for multi-byte characters. (\[[#1836](toss/es-toolkit#1836)], \[[#1852](toss/es-toolkit#1852)], \[[#1853](toss/es-toolkit#1853)])

- Fixed `compat/unset` to not treat an own literal dotted key as a deep path. (\[[#1808](toss/es-toolkit#1808)])

- Moved `compat/flattenDepth`'s flattening logic out of `flatten`. (\[[#1847](toss/es-toolkit#1847)])

- Restored the standalone `eq` and `templateSettings` entry points. (\[[#1895](toss/es-toolkit#1895)])

- Fixed `deburr` to remove all combining diacritical marks, matching Lodash. (\[[#1807](toss/es-toolkit#1807)])

- Fixed `partition` to accept any predicate return value, like `Array.prototype.filter`. (\[[#1937](toss/es-toolkit#1937)])

- Fixed `has` and `hasIn` to prioritize nullish literal keys over paths. (\[[#1810](toss/es-toolkit#1810)])

- Fixed `invokeMap` to normalize a string path via `toPath` for `this` binding. (\[[#1814](toss/es-toolkit#1814)])

- Fixed `isDeepKey` to detect deep keys with stricter patterns. (\[[#1621](toss/es-toolkit#1621)])

- Fixed `unzipWith` to return an empty array instead of throwing on empty input. (\[[#1816](toss/es-toolkit#1816)])

- Improved documentation, JSDoc accuracy, and internal refactoring across `compat`
  and `fp`. (\[[#1817](toss/es-toolkit#1817)], \[[#1820](toss/es-toolkit#1820)], \[[#1822](toss/es-toolkit#1822)], \[[#1823](toss/es-toolkit#1823)], \[[#1825](toss/es-toolkit#1825)], \[[#1829](toss/es-toolkit#1829)], \[[#1830](toss/es-toolkit#1830)], \[[#1842](toss/es-toolkit#1842)],
  \[[#1845](toss/es-toolkit#1845)], \[[#1851](toss/es-toolkit#1851)], \[[#1858](toss/es-toolkit#1858)], \[[#1867](toss/es-toolkit#1867)], \[[#1879](toss/es-toolkit#1879)])

We sincerely thank [@Antoliny0919](https://github.com/Antoliny0919), [@raon0211](https://github.com/raon0211), [@dayongkr](https://github.com/dayongkr), [@spokodev](https://github.com/spokodev), [@sarathfrancis90](https://github.com/sarathfrancis90),
[@mayur-shenoy](https://github.com/mayur-shenoy), [@mahirhir](https://github.com/mahirhir), [@kojesung](https://github.com/kojesung), [@Hprogram](https://github.com/Hprogram), [@BangDori](https://github.com/BangDori), and everyone else who
contributed. We appreciate your great efforts!

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@gwennlbh
gwennlbh deleted the fix-exif-orientation branch October 3, 2026 14:29

This branch was successfully deployed

4 active deployments
1828: App preview — 5f4b4c63 Deployed Jul 2, 2026 by gwennlbh via PR Preview / Deploy / Deploy #8389
1828: node_modules analysis — 5f4b4c63 Deployed Jul 1, 2026 by gwennlbh via report / Deploy #3771
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

crop issue when exporting on photos that have a non-horizontal Orientation EXIF field

1 participant