All Projects → aldor007 → Mort

aldor007 / Mort

Licence: mit
Storage and image processing server written in Go

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Mort

Imaginary
Fast, simple, scalable, Docker-ready HTTP microservice for high-level image processing
Stars: ✭ 4,107 (+877.86%)
Mutual labels:  webp, image-processing, png, jpeg, crop-image, libvips
Sharp
High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, AVIF and TIFF images. Uses the libvips library.
Stars: ✭ 21,131 (+4931.19%)
Mutual labels:  webp, image-processing, png, jpeg, resize, libvips
Bimg
Go package for fast high-level image processing powered by libvips C library
Stars: ✭ 1,394 (+231.9%)
Mutual labels:  webp, png, jpeg, resize, crop-image, libvips
Flyimg
Dockerized PHP7 application runs as a Microservice to resize and crop images on the fly. Get optimised images with MozJPEG, WebP or PNG using ImageMagick. Includes face detection, cropping, face blurring, image rotation and many other options. Abstract storage based on FlySystem in order to store images on any provider (local, AWS S3...).
Stars: ✭ 762 (+81.43%)
Mutual labels:  webp, image-processing, png, jpeg, crop-image
Imgproxy
Fast and secure standalone server for resizing and converting remote images
Stars: ✭ 5,688 (+1254.29%)
Mutual labels:  image-processing, png, jpeg, crop-image, libvips
Govips
A lightning fast image processing and resizing library for Go
Stars: ✭ 442 (+5.24%)
Mutual labels:  webp, image-processing, png, jpeg, libvips
imagor
Fast, Docker-ready image processing server in Go and libvips
Stars: ✭ 2,276 (+441.9%)
Mutual labels:  png, jpeg, webp, libvips, crop-image
Libvips
A fast image processing library with low memory needs.
Stars: ✭ 6,094 (+1350.95%)
Mutual labels:  webp, image-processing, png, jpeg, libvips
Tiny Site
图片优化
Stars: ✭ 65 (-84.52%)
Mutual labels:  webp, png, jpeg, crop-image
video thumbnail
This plugin generates thumbnail from video file or URL. It returns image in memory or writes into a file. It offers rich options to control the image format, resolution and quality. Supports iOS and Android.
Stars: ✭ 159 (-62.14%)
Mutual labels:  png, jpeg, webp
ipx
High performance, secure and easy to use image proxy based on Sharp and libvips.
Stars: ✭ 683 (+62.62%)
Mutual labels:  resize, webp, libvips
Selene
A C++17 image representation, processing and I/O library.
Stars: ✭ 266 (-36.67%)
Mutual labels:  image-processing, png, jpeg
Imageprocessor
📷 A fluent wrapper around System.Drawing for the processing of image files.
Stars: ✭ 2,452 (+483.81%)
Mutual labels:  webp, png, jpeg
Metadata Extractor
Extracts Exif, IPTC, XMP, ICC and other metadata from image, video and audio files
Stars: ✭ 1,972 (+369.52%)
Mutual labels:  webp, png, jpeg
imagecodecs
Image transformation, compression, and decompression codecs. Forked from https://pypi.org/project/imagecodecs
Stars: ✭ 56 (-86.67%)
Mutual labels:  png, jpeg, webp
Next Img
A Next.js plugin for embedding optimized images.
Stars: ✭ 149 (-64.52%)
Mutual labels:  webp, png, jpeg
sail
The missing small and fast image decoding library for humans (not for machines) ⛵ https://sail.software
Stars: ✭ 206 (-50.95%)
Mutual labels:  png, jpeg, webp
pixl
🚀 Lightweight image processing library in C++11
Stars: ✭ 31 (-92.62%)
Mutual labels:  resize, png, jpeg
Lilliput
Resize images and animated GIFs in Go
Stars: ✭ 1,690 (+302.38%)
Mutual labels:  webp, png, jpeg
gfxprim
Open-source modular 2D bitmap graphics library with emphasis on speed and correctness.
Stars: ✭ 32 (-92.38%)
Mutual labels:  png, jpeg, webp

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 for more info

Demo


Original image

Click on result image to see URL. More examples can be found in Image Operations list

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

More details about configuration can be found in Configuration.md

Debian and Ubuntu

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

Docker

See 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

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
git clone  https://github.com/aldor007/mort.git $GOPATH/src/github.com/aldor007/mort
cd $GOPATH/src/github.com/aldor007/mort
  1. Install dependencies:
dep ensure

Run unit tests:

make unit

Run integration tests:

make integrations

Built With

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

Contributing

Please read 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 file for details

Inspirations

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].