Read and write exif data from/into an image
npm install @lodev09/react-native-exify
!NPM Downloads
A simple library to read and write image Exif metadata for your React Native Apps. 🏷️

* Read Exif data from an image
* Write Exif data into an image
* Tags are typed and standardized
* Works with Expo and bare React Native projects
* Supports New Architecture (Turbo Module)
``sh`
yarn add @lodev09/react-native-exify
`tsx`
import * as Exify from '@lodev09/react-native-exify';
`tsx
const uri = 'file://path/to/image.jpg'
const tags = await Exify.read(uri)
console.log(tags)
`
> [!IMPORTANT]
> The uri must include a scheme (e.g. file://, ph://, content://). Bare file paths like /var/mobile/.../image.jpg are not supported and will throw an error.
> [!NOTE]
> On Android 10+, GPS data is redacted from content:// URIs by default. The library automatically requests ACCESS_MEDIA_LOCATION at runtime to access unredacted location data. Your app must have media read access (READ_MEDIA_IMAGES or READ_EXTERNAL_STORAGE) granted first.expo-media-library
> If you're already using a library like that grants ACCESS_MEDIA_LOCATION, exify will use the existing grant.
`tsx
import type { ExifTags } from '@lodev09/react-native-exify';
const uri = 'file://path/to/image.jpg'
const newTags: ExifTags = {
GPSLatitude: 69.69,
GPSLongitude: 69.69,
UserComment: 'Someone wrote GPS here!',
}
const result = await Exify.write(uri, newTags)
console.log(result.tags)
``
> [!NOTE]
> On iOS, writing exif into an Asset file will duplicate the image. iOS does not allow writing exif into an Asset file directly.
> If you're getting the photo from a camera, write it into the output file first before saving to the Asset library!
See example for more detailed usage.
The example app uses @lodev09/react-native-true-sheet for the image picker UI. Check it out!
See the contributing guide to learn how to contribute to the repository and the development workflow.
---
Made with ❤️ by @lodev09