Skip to content

quix-labs/caddy-image-processor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Static Releases

Caddy Image Processor

This repository contains a CaddyServer module for processing images on the fly using libvips.

Features

  • Automatic image processing based on URL query parameters
  • Supports resizing, rotating, cropping, quality adjustments, format conversion, and more
  • Efficient processing using libvips

Prerequisites

Installation and Configuration

Using Docker

  • Pull the Docker image from the GitHub Container Registry:
    docker pull ghcr.io/quix-labs/caddy-image-processor:latest

Using xcaddy

  • Before building the module, ensure you have xcaddy installed on your system. You can install it using the following command:

    go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
  • To build this module into Caddy, run the following command:

    CGO_ENABLED=1 xcaddy build --with github.com/quix-labs/caddy-image-processor

    This command compiles Caddy with the image processing module included.

Using prebuilt assets

  • You can also install the tool using release assets.

    Download the appropriate package from the Releases page, and then follow the instructions provided for your specific platform.

Usage

Using Docker

docker run -p 80:80 -v $PWD/Caddyfile:/etc/caddy/Caddyfile -d ghcr.io/quix-labs/caddy-image-processor:latest

Your can see more information in the official docker documentation for caddy

Using xcaddy build / prebuilt assets

/path/to/your/caddy run --config /etc/caddy/Caddyfile

Your can see more information in the official documentation for caddy

Example Caddyfile

{
    order image_processor before respond
}

localhost {
    root * /your-images-directory
    file_server
    image_processor
}

In this example, all requests undergo processing by the image processor module before being served by the caddy.

Available Query Parameters

  • or: Orientation (e.g., 90, 180, 270)
  • crop: Crop (1 for true, 0 for false)
  • w: Width
  • h: Height
  • blur: Blur amount
  • q: Quality
  • fm: Format (e.g., jpg, png, gif, webp, avif)

Planned Features

The following features are planned for future implementation:

  • FLIP parameter
  • CROP NOT GLIDE COMPLIANT parameter adjustments
  • Additional parameters: fit, dpr, bri, con, gam, sharp
  • Parameters for adding watermark: pixel, filt, mark, markw, markh, markx, marky, markpad, markpos, markalpha, bg, border

Development

To contribute to the development of Caddy Image Processor, follow these steps:

  1. Make sure you have Go installed on your system.

  2. Clone this repository to your local machine:

    git clone https://github.com/quix-labs/caddy-image-processor.git
  3. Navigate to the project directory:

  4. Install xcaddy if you haven't already:

    go get -u github.com/caddyserver/xcaddy/cmd/xcaddy
  5. Make your changes in the source code.

  6. Run tests to ensure your changes haven't introduced any issues:

    make test
  7. If tests pass, you can build the project:

    make build
  8. To run the project in development mode, use the following command:

    make run
  9. Once you're satisfied with your changes, create a pull request to the main branch of the repository for review.

Credits

License

The MIT License (MIT). Please see License File for more information.

About

CaddyServer module for processing images on the fly.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors 2

  •  
  •