Skip to content

Latest commit

 

History

History
68 lines (48 loc) · 3.35 KB

File metadata and controls

68 lines (48 loc) · 3.35 KB

libexif-wasm

GitHub Actions License NPM version

This library is a WebAssembly port of the libexif C library, which is used for parsing, editing, and saving EXIF metadata in images. It intends to be a faithful port of the original library and provide all of its functions and features.

Hence, it follows that the API is low-level and may not be user-friendly. Consider using one of these libraries if you are looking for a different API:

Installation

npm install libexif-wasm # npm
yarn add libexif-wasm    # yarn
pnpm add libexif-wasm    # pnpm

Usage

The library can be used in both browser environments and Node.js.

import { ExifData, ExifIfd } from "libexif-wasm";

// Get the image data
const data = await fetch("path/to/image.jpg").then((res) => res.arrayBuffer()); // Fetch API
const data = (await readFile("path/to/image.jpg")).buffer; // Node.js `fs/promises`
const data = await formData.get("file").arrayBuffer(); // FormData
const data = await file.arrayBuffer(); // File API

// Create an ExifData instance
const exifData = ExifData.from(data); // Buffer
const exifData = ExifData.newFromData(new Uint8Array(data)); // Uint8Array

exifData.dump(); // Dump all EXIF data to console
const exifEntry = exifData.getEntry("MAKE"); // Get a specific ExifEntry
console.log(`tag ${exifEntry.tag} = ${exifEntry.toString()}`); // Print the value of the ExifEntry
const exifIfdGps = exifData.ifd[ExifIfd.GPS]; // Get the GPS IFD
// + Anything else that libexif supports

exifData.free(); // Free the memory used by the ExifData instance

For more examples, see docs/usage:

  1. Get all Exif entries
  2. Byte order
  3. Compatibility
  4. Data
  5. Resource Management
  6. Tags

License

This project is licensed under the GNU Lesser General Public License v2.1 - see the LICENSE file for details.

This project makes heavy use of the C library libexif, which is licensed under the GNU Lesser General Public License v2.1. For more information, see libexif/libexif/COPYING in their GitHub repository.