A modern, fast, and lightweight image converter application built with Tauri, React, and Rust.
- High-Performance Conversion: Powered by Rust for blazing fast image processing.
- Drag & Drop Interface: Intuitive drag-and-drop area for easy file selection.
- Format Support:
- Input: JPG, PNG, WEBP, HEIC
- Output: JPG, PNG, WEBP
- Customizable Settings:
- Set default output directory.
- File naming customization (prefix, conflict resolution).
- Theme switching (Light / Dark / System).
- Modern UI: Built with Tailwind CSS and Shadcn/ui for a clean and responsive user experience.
- Frontend:
- React (TypeScript)
- Tailwind CSS
- Radix UI / Shadcn/ui
- Lucide React (Icons)
- Backend / Core:
- Build Tools:
Ensure you have the following installed on your machine:
- Node.js (or Bun)
- Rust & Cargo (Install via rustup)
- System Dependencies for Tauri (see Tauri Prerequisites)
-
Clone the repository:
git clone https://github.com/t1732/rimgcvt.git cd rimgcvt -
Install dependencies:
Using Bun (recommended):
bun install
Or using npm:
npm install
-
Run the development server:
bun tauri dev # or npm run tauri dev
This will start the Vite dev server and launch the Tauri application window.
- Select Images: Drag and drop images onto the window or click to select files.
- Choose Format: Select the desired output format (JPG, PNG, WEBP).
- Convert: Click the "Convert" button to process the images.
- Settings: Use the settings menu to configure output paths, filename prefixes, and themes.
To build the application for distribution:
bun tauri build
# or
npm run tauri buildThe build artifacts will be available in src-tauri/target/release/bundle.
If you build for Windows from macOS (using cargo-xwin / cargo-xwin runner), some C sources (e.g. libwebp-sys) require SIMD features (SSSE3 / SSE4.1 / AVX / AVX2). When those target features are not passed to the compiler you may see errors like "requires target feature 'ssse3'".
A working approach is to set TARGET_CFLAGS to enable the CPU features before running the build. Example (zsh/bash):
export TARGET_CFLAGS="-mssse3 -msse4.1 -mavx -mavx2"
tauri build --runner cargo-xwin --target "x86_64-pc-windows-msvc"If clang-cl rejects those flags, try using clang as the cross-compiler wrapper:
export CC_x86_64_pc_windows_msvc=clang
export TARGET_CFLAGS="-mssse3 -msse4.1 -mavx -mavx2"
tauri build --runner cargo-xwin --target "x86_64-pc-windows-msvc"These commands were verified on macOS for this repository to address "always_inline ... requires target feature" compile errors when cross-compiling to x86_64-pc-windows-msvc.
