Skip to content

The tool embed EXIF or some convenient feature for photo that written in rust

License

Notifications You must be signed in to change notification settings

pmnxis/chama-optics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chama Optics

dependency status Build Status

Chama Optics is a program created for recent mirrorless and DSLR cameras,
inspired by the travel VTuber Akai Haato(赤井はあと), who loves photography.

It analyzes the EXIF data embedded in photos along with the user’s settings to resize, compress, and tag images before saving them, while also offering additional convenient features.

This program is developed in Rust using the eframe/egui framework, along with libraries such as libheif and exif-rs.

Current Status

  • Read JPEG/PNG and other common formats
  • Read HEIF photos (libheif)
  • Read EXIF data (supports up to 2.3.x standard; not yet compliant with 3.0)
  • Save photos with selected frames and settings
  • Themes from genally use in another case
  • Read Panasonic lumix LUT/PhotoStyle and Nikon Picture Control names
  • More themes
  • Save photos with EXIF
  • Face Detection with CPU
  • Face Detection with neural engine in macOS.
  • Face Detection utilize NPU or GPU in Windows / Linux (Optional)
  • Multi core usage
  • Utilize camera maker logo
  • Watermark feature
  • When loading HEIF / JPEG images, generate thumbnails by prioritizing the Thumbnail / Preview metadata inside EXIF instead of resizing pixels from the full image (improves performance)
  • Feature to create 4-cut or 2-cut photos with idol images, similar to photo sticker booths
  • Function to group similar photos or images taken around the same time
  • Preset and adjustment controls for contrast, brightness, grain, texture, and LUT

Building and Running

Quick Start

cargo run --release --features face_detection_insightface

Windows

Prerequisites

  1. Install Rust
  2. Install Visual Studio Build Tools with "C++ build tools"
  3. (Optional) Install vcpkg for HEIF support

Using vcpkg for HEIF support (Optional)

For HEIF/HEIC image support, you need libheif. The easiest way on Windows is using vcpkg:

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
vcpkg integrate install
vcpkg install libheif:x64-windows-static-md
vcpkg install libheif:x64-windows-static
cd ..

Building

Use the provided build script:

.\build_windows.bat

Or build manually:

# Build release version
cargo build --release --features desktop

# Run directly
cargo run --release --features desktop

# Create bundled executable
cargo install cargo-bundle
cargo bundle --release

Output

  • Debug build: target\debug\chama-optics.exe
  • Release build: target\release\chama-optics.exe
  • Bundled app: target\release\bundle\windows\Chama Optics.exe

Features on Windows

  • ✅ Full GUI support
  • ✅ File dialogs
  • ✅ System fonts
  • ✅ HEIF/HEIC support (with vcpkg)
  • ⚠️ Face detection: CPU only (No GPU/NPU support yet)

Face Detection Options

For Face Detection, Use macOS/iOS:

  • VisionKit (macOS/iOS): Works perfectly, fast, accurate
  • Built-in Apple framework, no external dependencies
  • Optimized for Apple Silicon

macOS

brew install pkgconf libheif
cargo run --release
# When make *.app
./build_mac.sh
cd ./target/release/bundle/osx
open -n "Chama Optics.app"

Linux

Prerequisites

  1. Install Rust
  2. Install system dependencies

System Dependencies

Ubuntu/Debian:

# GUI dependencies
sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
    libxkbcommon-dev libssl-dev pkg-config fontconfig

# Optional: HEIF support
sudo apt-get install libheif-dev libde265-dev x265

# Optional: Build libheif from source (if needed)
source ./build_deps_debian.sh

Fedora/RHEL:

sudo dnf install clang clang-devel clang-tools-extra libxkbcommon-devel \
    pkg-config openssl-devel libxcb-devel gtk3-devel atk fontconfig-devel

# Optional: HEIF support
sudo dnf install libheif-devel libde265-devel x265-devel

Arch Linux:

sudo pacman -S base-devel pkg-config fontconfig libheif

Building

Use the provided build script:

chmod +x build_linux.sh
./build_linux.sh

Or build manually:

# Build release version
cargo build --release --features desktop

# Run directly
cargo run --release --features desktop

# Create bundled executable
cargo install cargo-bundle
cargo bundle --release

Output

  • Debug build: target/debug/chama-optics
  • Release build: target/release/chama-optics
  • Bundled app: target/release/bundle/linux/chama-optics

Features on Linux

  • ✅ Full GUI support
  • ✅ File dialogs
  • ✅ System fonts
  • ✅ HEIF/HEIC support (with libheif)
  • ✅ Wayland and X11 support
  • ⚠️ Face detection: CPU only (No GPU/NPU support yet)

Known Limitations on Linux

Face Detection with InsightFace Feature: The --features face_detection_insightface flag may have compatibility issues on Linux depending on your system configuration and ONNX Runtime version.

Recommendation:

  • Default build (without face_detection_insightface): ✅ Recommended
  • With face_detection_insightface feature: ⚠️ Experimental, may require additional system dependencies

License

Most of the code depends on the NON-AI-MIT license, while some portions are under the MIT or Apache 2.0 licenses.

In particular, the image data has been processed by pmnxis, but the original vector icons were used with permission from シエミカ (X: shiemika324).

All icons are strictly prohibited from being used for any form of AI training without exception.

About

The tool embed EXIF or some convenient feature for photo that written in rust

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages