CADDY_FILE_SERVER

package module
v0.0.0-...-e088638 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 3, 2024 License: MIT Imports: 13 Imported by: 0

README

Build Static Releases Build Docker

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

Using file_server
localhost {
    root /your-images-directory
    file_server
    image_processor
}
Using reverse_proxy
localhost {
    reverse_proxy your-domain.com
    image_processor
}

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

Available Query Parameters

Param Name Description Type
h Height Image height Integer
w Width Image width Integer
ah AreaHeight Area height Integer
aw AreaWidth Area width Integer
t Top Y-coordinate of the top-left corner Integer
l Left X-coordinate of the top-left corner Integer
q Quality Image quality (JPEG compression) Integer (default 75)
cp Compression Compression level (0-9, 0 = lossless) Integer
z Zoom Zoom level Integer
crop Crop Whether cropping is enabled Boolean
en Enlarge Whether enlargement is enabled Boolean
em Embed Whether embedding is enabled Boolean
flip Flip Whether vertical flipping is enabled Boolean
flop Flop Whether horizontal flipping is enabled Boolean
force Force Whether to force action Boolean
nar NoAutoRotate Whether auto-rotation is disabled Boolean
np NoProfile Whether profile is disabled Boolean
itl Interlace Whether interlacing is enabled Boolean (default true)
smd StripMetadata Whether to strip metadata Boolean (default true)
tr Trim Whether trimming is enabled Boolean
ll Lossless Whether compression is lossless Boolean
th Threshold Color threshold Float
g Gamma Gamma correction Float
br Brightness Brightness Float
c Contrast Contrast Float
r Rotate Rotation angle (45, 90, 135, 180, 235, 270, 315) Integer
b GaussianBlur Gaussian blur level Integer
bg Background Background color (white, black, red, magenta, blue, cyan, green, yellow, or hexadecimal format #RRGGBB) Color
fm Type Image type (jpg, png, gif, webp, avif) Image Type (default original)

Examples

Planned Features

The following features are planned for future implementation:

  • Sharp compliance: fit,...

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.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Middleware

type Middleware struct {
	// contains filtered or unexported fields
}

Middleware allow user to do image processing on the fly using libvips With simple queries parameters you can resize, convert, crop your served images

func (Middleware) CaddyModule

func (Middleware) CaddyModule() caddy.ModuleInfo

func (*Middleware) Provision

func (m *Middleware) Provision(ctx caddy.Context) error

func (Middleware) ServeHTTP

func (m Middleware) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.Handler) error

func (*Middleware) UnmarshalCaddyfile

func (m *Middleware) UnmarshalCaddyfile(d *caddyfile.Dispenser) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL