Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

885 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bloom

a hardware-accelerated media viewer built with Rust

Platform License Status

bloom preview

About

Bloom is a fast, lightweight media viewer with GPU-accelerated rendering and a wide range of supported formats, from everyday JPEGs to camera RAW, HDR, scientific formats, animation, and video. It also includes a set of light, non-destructive editing tools for quick adjustments. It is a viewer first and not a full editor, focused on doing the simple things well.

Features

  • GPU rendering: hardware-accelerated via wgpu, with mipmaps and tiled textures for images beyond GPU limits
  • Broad format support: dozens of image formats plus animation (GIF, APNG, WebP) and video (MP4, MOV, MKV, WebM, and more) with audio, scrubbing, and frame stepping
  • Non-destructive modifiers: 22 stackable effects, from color correction (levels, exposure, vibrance, and more) to blur (Gaussian, motion, radial), halftone, grain, and pixel sort at any angle
  • Draw and text tools: paint freehand brush strokes and place text directly on the canvas
  • Export: PNG, JPEG, or WebP with crop, rotation, and modifiers applied
  • Gallery: browse every image in a folder, and open files by drag and drop or clipboard paste
  • Info panel: dimensions, EXIF, RGB histogram, and pixel color under the cursor
  • Themes: 22 built-in, including Catppuccin, Tokyo Night, Nord, and Gruvbox
  • Customizable keybindings: rebind any action in preferences

Supported Formats

FormatExtensionNotes
Animated PNG.apngAnimated
Apple Icon.icnsLargest available size
BMP.bmp
DDS.ddsBC1–BC7 and uncompressed
DICOM.dcm .dicomMedical imaging, first frame
EPS / PostScript.eps .ps .epsfRequires Ghostscript on PATH
Farbfeld.ff
FITS.fits .fit .ftsAstronomy imaging; linear normalized to greyscale
GIF.gifAnimated
GIMP.xcfLayers composited top-to-bottom
HDR (Radiance).hdrTonemapped (Reinhard)
HEIC / HEIF.heic .heifIn default/-heif downloads; --features heif from source
ICO.icoLargest available size
JPEG.jpg .jpeg
JPEG 2000.jp2 .j2k .j2c .jpx
JPEG XL.jxl
Krita.kraMerged composite, no layers
KTX2.ktx2Basis Universal and uncompressed
OpenEXR.exrTonemapped (Reinhard)
Photoshop.psd .psbMerged composite, no layers
PNG.png
Portable bitmap.pbm .pgm .ppm
QOI.qoi
RAW.ari .arw .cr2 .cr3 .crm .crw .dcr .dcs .dng .erf .fff .iiq .kdc .mef .mos .mrw .nef .nrw .orf .ori .pef .qtk .raf .raw .rwl .rw2 .srw .x3f .3frCamera RAW; not all models supported
SVG.svg .svgzRasterized at native size
TGA.tga
TIFF.tif .tiffNo 64-bit float
Video.mp4 .m4v .mov .mkv .webm .avi .mpg .mpeg .ts .m2ts .wmv .flvPlayback with audio; in the default download or --features av from source
WebP.webpStatic and animated

Download

Prebuilt releases come in three flavors per platform. Pick based on which formats you need:

Download Includes Size
bloom-<platform> Everything, including HEIC/HEIF and video Largest
bloom-<platform>-heif Core formats + HEIC/HEIF, no video Smaller
bloom-<platform>-minimal Core formats only Smallest

Video is the bulk of the size (it bundles FFmpeg), so grab -heif or -minimal if you don't need it.

Build

The feature flags below only matter when building from source. Prebuilt downloads above already include them.

cargo build --release

For HEIC/HEIF support, install libheif and build with the feature flag:

# macOS
brew install libheif

# Linux
sudo apt install libheif-dev   # Ubuntu/Debian
sudo dnf install libheif-devel # Fedora
sudo pacman -S libheif         # Arch

cargo build --release --features heif

For video playback, the ffmpeg-next bindings link against FFmpeg. A helper script installs it:

# macOS / Linux
./scripts/setup-av.sh

# Windows (PowerShell): downloads a prebuilt FFmpeg into vendor/ and sets FFMPEG_DIR
./scripts/setup-av.ps1

cargo build --release --features av

On macOS and Linux the script installs the FFmpeg dev libraries via your package manager. On Windows it fetches a prebuilt FFmpeg into vendor/ffmpeg and installs LLVM. Open a new terminal afterward so the environment changes take effect.

Requires a GPU with WebGPU support. On Windows, DX12 is used by default.

Privacy

Bloom is entirely local. No telemetry, no analytics, no network requests — ever. Your files stay on your machine.

About

hardware-accelerated media viewer

Topics

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Used by

Contributors

Languages