Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. bimg

bimg

MITGov1.1.5

Go package for fast high-level image processing using libvips C bindings.

Visit WebsiteGitHubGitHub
3.0k stars345 forks0 contributors

What is bimg?

bimg is a Go package for high-performance image processing that leverages the libvips C library. It provides a simple programmatic API for common operations like resizing, cropping, rotating, and format conversion, designed to be efficient with a low memory footprint. It is typically 4-8x faster than alternatives like ImageMagick, GraphicsMagick, or Go's native image package.

Target Audience

Go developers building applications that require fast, efficient image processing at scale, such as web services handling thousands of images daily. It is also suitable for projects needing high-level image operations with support for multiple formats including JPEG, PNG, WEBP, TIFF, PDF, GIF, SVG, and AVIF.

Value Proposition

Developers choose bimg for its exceptional speed and low memory usage, backed by the libvips library, making it ideal for production environments. Its simple API abstracts complex C bindings while offering a comprehensive set of image operations, format conversions, and effects like watermarking and Gaussian blur.

Overview

Go package for fast high-level image processing powered by libvips C library

Use Cases

Best For

  • Building high-throughput image processing services in Go that need to handle thousands of images per day with minimal resource consumption.
  • Creating thumbnail generation pipelines for web applications that require fast resizing, cropping, and format conversion across multiple image formats.
  • Developing applications that require efficient image transformations like rotation, flipping, and zooming with support for EXIF metadata and auto-rotation.
  • Implementing image watermarking features using text or image overlays with customizable opacity, font, and positioning.
  • Converting images between formats (e.g., JPEG to WEBP or PNG) with transparent conversion and quality control for optimized web delivery.
  • Applying effects such as Gaussian blur or grayscale conversion to images programmatically within a Go-based workflow.

Not Ideal For

  • Projects in non-Go ecosystems needing image processing without language-specific bindings
  • Environments with strict security or compliance policies that restrict installing C libraries or compiling from source
  • Applications requiring output formats beyond JPEG, PNG, and WEBP, such as animated GIFs or multi-page TIFFs
  • Teams wanting a zero-dependency, pure Go solution for simple image manipulations without external system libraries

Pros & Cons

Pros

Blazing Fast Performance

Leverages libvips for typically 4-8x faster processing than ImageMagick or Go's native image package, as shown in benchmark tests for operations like resize and convert.

Low Memory Footprint

Designed for efficiency with minimal resource usage, making it suitable for production environments handling thousands of images daily, as emphasized in the README.

Wide Input Format Support

Can read JPEG, PNG, WEBP, TIFF, PDF, GIF, SVG, and AVIF (with libvips 8.9+), providing flexibility for diverse image sources despite output limitations.

Clean Programmatic API

Offers a simple Go interface for high-level operations like resize, crop, and watermark, abstracting complex C bindings with examples for common tasks.

Cons

C Library Dependency Complexity

Requires libvips and a C compiler, complicating installation and deployment compared to pure Go packages, and the deprecated install script adds uncertainty.

Limited Output Format Options

Only supports JPEG, PNG, and WEBP for output, which may not meet needs for formats like GIF animations or TIFF with layers, as admitted in the README's format list.

Version-Specific Feature Gaps

Operations like smart crop or trim depend on specific libvips versions (e.g., 8.5+ or 8.6+), leading to potential compatibility issues and fragmented support.

Maintenance and API Stability

The v1 release introduced breaking changes, and the deprecated installation script indicates ongoing maintenance challenges that could affect long-term reliability.

Frequently Asked Questions

Quick Stats

Stars3,022
Forks345
Contributors0
Open Issues164
Last commit1 year ago
CreatedSince 2015

Tags

#resize#png#high-performance#processing#crop-image#format-conversion#cli-tool#watermarking#watermark#image-processing#golang#jpeg#libvips#image#image-resize#go#webp

Built With

G
Go
l
libvips
C
C++

Links & Resources

Website

Included in

Go169.1k
Auto-fetched 13 hours ago

Related Projects

gocvgocv

Go package for computer vision using OpenCV 4 and beyond. Includes support for DNN, CUDA, OpenCV Contrib, and OpenVINO.

Stars7,474
Forks903
Last commit1 month ago
imaginaryimaginary

Fast, simple, scalable, Docker-ready HTTP microservice for high-level image processing

Stars6,073
Forks499
Last commit8 months ago
imagingimaging

Imaging is a simple image processing package for Go

Stars5,744
Forks482
Last commit2 years ago
gggg

Go Graphics - 2D rendering in Go with a simple API.

Stars4,790
Forks383
Last commit2 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub