Skip to content

loopwerk/SagaImageReader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SagaImageReader

An image reader for Saga that turns images into Items with EXIF metadata. Supports JPEG, PNG, WebP, and TIFF.

Uses Scry for cross-platform EXIF parsing — works on both macOS and Linux.

Installation

let package = Package(
  name: "MyWebsite",
  dependencies: [
    .package(url: "https://github.com/loopwerk/Saga", from: "3.0.0"),
    .package(url: "https://github.com/loopwerk/SagaImageReader", from: "1.0.0"),
  ],
  targets: [
    .target(
      name: "MyWebsite",
      dependencies: ["Saga", "SagaImageReader"]),
  ]
)

Usage

import SagaImageReader

try await Saga(input: "content", output: "deploy")
  .register(
    folder: "photos",
    metadata: ImageMetadata.self,
    readers: [.imageReader],
    writers: [
      .itemWriter(swim(renderPhoto)),
    ]
  )
  .run()

The .imageReader reads image files and extracts EXIF metadata as frontmatter.

ImageMetadata

SagaImageReader ships with ImageMetadata, a ready-made Metadata type with all common EXIF fields as optionals — camera info, lens, exposure settings, GPS coordinates, dates, and more.

You can also define your own metadata struct with just the fields you need:

struct PhotoMetadata: Metadata {
  let make: String?
  let model: String?
  let iso: Int?
}

About

An image reader for Saga

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages