Popularity
6.4
Growing
Activity
4.5
Declining
386
19
11

Programming language: Go
Tags: Images    
Latest version: v0.14.1

mort alternatives and similar packages

Based on the "Images" category

Do you think we are missing an alternative of mort or a related project?

Add another 'Images' Package

README

Mort

Build Status Codecov Docker Docker Registry Go Report Card Godoc Releases LICENSE

An S3-compatible image processing server written in Go. Still in active development.

Features

  • HTTP server
  • Resize, Rotate, SmartCrop
  • Convert (JPEG, PNG , BMP, Webp)
  • Multiple storage backends (disk, S3, http)
  • Fully modular
  • S3 API for listing and uploading files
  • Requests collapsing
  • Build in rate limiter
  • HTTP Range and Conditional requests
  • Compression (gzip, brotli)

And more see [changelog](CHANGELOG.md) for more info

Demo


Original image

Click on result image to see URL. More examples can be found in [Image Operations list](doc/Image-Operations.md) Description Result (to see result click on image) preset: small (preserve aspect ratio) width: 75 preset: blur resize image (preserve aspect ratio) width: 700 blur image with sigma 5.0 preset: webp resize image (preserve aspect ratio) width: 1000 and change format to webp preset: watermark resize image (preserve aspect ratio) width: 1300 and add watermark

Usage

Mort can be used directly from the Internet and behind any proxy.

Install

go get github.com/aldor007/mort/cmd/

Command line help

$ ./mort
Usage of  mort
  -config string
        Path to configuration (default "/etc/mort/mort.yml")

Configuration

Example configuration used for providing demo images:

headers: #  add or overwrite all response headers of given status. This field is optional
  - statusCodes: [200]
    values:
      "cache-control": "max-age=84000, public"

buckets: # list of available buckets 
    demo:    # bucket name 
        keys: # list of S3 keys (optional)
          - accessKey: "access"
            secretAccessKey: "random"
        transform: # config for transforms
            path: "\\/(?P<presetName>[a-z0-9_]+)\\/(?P<parent>[a-z0-9-\\.]+)" # regexp for transform path 
            kind: "presets-query" #  type of transform or "query"
            presets: # list of presets
                small:
                    quality: 75
                    filters:
                        thumbnail: 
                            width: 150
                blur:
                    quality: 80
                    filters:
                        thumbnail: 
                            width: 700
                        blur:
                          sigma: 5.0
                webp:
                    quality: 100
                    format: webp
                    filters:
                        thumbnail: 
                            width: 1000
                watermark:
                    quality: 100
                    filters:
                        thumbnail: 
                            width: 1300
                        watermark:
                            image: "https://i.imgur.com/uomkVIL.png"
                            position: "top-left"
                            opacity: 0.5
                smartcrop:
                    quality: 80
                    filters:
                      crop:
                        width: 200
                        height: 200
        storages:
             basic: # retrieve originals from s3
                 kind: "s3"
                 accessKey: "acc"
                 secretAccessKey: "sec"
                 region: ""
                 endpoint: "http://localhost:8080"
             transform: # and store it on disk
                 kind: "local-meta"
                 rootPath: "/var/www/domain/"
                 pathPrefix: "transform"

List of all image operations can be found in [Image-Operations.md](doc/Image-Operations.md)

More details about configuration can be found in [Configuration.md](doc/Configuration.md)

Debian and Ubuntu

I will provide Debian package when we will be completely stable ;)

Docker

See [Dockerfile](Dockerfile) for image details.

Pull docker image

docker pull aldor007/mort

Create you custom docker deployment

Create Dockerfile or use Dockerfile.service

FROM aldor007/mort:latest
ADD config.yml /etc/mort/mort.yml # add yours config

Build container

docker build -f Dockerfile.service -t myusername/mort

Run docker

docker run -p 8080:8080 myusername/mort

Full example you can find [here](example/)

Development

  1. Make sure you have a Go language compiler >= 1.9 (required) and git installed.
  2. Install libvips like described on bimg page
  3. Ensure your GOPATH is properly set.
  4. Download it bash git clone https://github.com/aldor007/mort.git $GOPATH/src/github.com/aldor007/mort cd $GOPATH/src/github.com/aldor007/mort
  5. Install dependencies: bash dep ensure Run unit tests: bash make unit Run integration tests: bash make integrations

Built With

  • dep - Dependency Management
  • bimg - Image processing powered by libvips C library

Contributing

Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests.

License

This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details

Inspirations


*Note that all licence references and agreements mentioned in the mort README section above are relevant to that project's source code only.