All Projects → CometaFront → Cometa

CometaFront / Cometa

Licence: mit
Super fast, on-demand and on-the-fly, image processing.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Cometa

Oblique
With Oblique explore new styles of displaying images
Stars: ✭ 633 (+7812.5%)
Mutual labels:  image-processing, image, images, image-manipulation
Imagemin Module
Automatically optimize (compress) all images used in Nuxt.js
Stars: ✭ 37 (+362.5%)
Mutual labels:  image-processing, image, images
Wasm Imagemagick
Webassembly compilation of https://github.com/ImageMagick/ImageMagick & samples
Stars: ✭ 442 (+5425%)
Mutual labels:  image-processing, image, image-manipulation
Bitmap
C++ Bitmap Library
Stars: ✭ 125 (+1462.5%)
Mutual labels:  image-processing, image, image-manipulation
Nuxt Image Loader Module
An image loader module for nuxt.js that allows you to configure image style derivatives.
Stars: ✭ 135 (+1587.5%)
Mutual labels:  image-processing, images, image-manipulation
Selene
A C++17 image representation, processing and I/O library.
Stars: ✭ 266 (+3225%)
Mutual labels:  image-processing, image, images
Menyoki
Screen{shot,cast} and perform ImageOps on the command line 🌱 🏞️
Stars: ✭ 255 (+3087.5%)
Mutual labels:  image-processing, image, image-manipulation
Crunch
Crunch is a tool for lossy PNG image file optimization. It combines selective bit depth, color type, and color palette reduction with zopfli DEFLATE compression algorithm encoding using the pngquant and zopflipng PNG optimization tools. This approach leads to a significant file size gain relative to lossless approaches at the expense of a relatively modest decrease in image quality (see example images below).
Stars: ✭ 3,074 (+38325%)
Mutual labels:  image-processing, image, images
Imgproxy
Fast and secure standalone server for resizing and converting remote images
Stars: ✭ 5,688 (+71000%)
Mutual labels:  image-processing, image
Gaussianblur
An easy and fast library to apply gaussian blur filter on any images. 🎩
Stars: ✭ 473 (+5812.5%)
Mutual labels:  image-processing, image
Sv Images
Image manipulation library with an HTTP based API.
Stars: ✭ 7 (-12.5%)
Mutual labels:  image-processing, images
Pesdk Android Demo
A fully customizable photo editor for your app.
Stars: ✭ 464 (+5700%)
Mutual labels:  image-processing, image-manipulation
Jspaint
🎨 Classic MS Paint, REVIVED + ✨Extras
Stars: ✭ 5,972 (+74550%)
Mutual labels:  image, image-manipulation
Compressor
An easy to use and well designed image compress library for Android, based on Android native image library. Put forward a framework for quick switch from different compress algorithm.
Stars: ✭ 476 (+5850%)
Mutual labels:  image-processing, image
Lena.js
👩 Library for image processing
Stars: ✭ 432 (+5300%)
Mutual labels:  image-processing, image-manipulation
Tocropviewcontroller
A view controller for iOS that allows users to crop portions of UIImage objects
Stars: ✭ 4,210 (+52525%)
Mutual labels:  image-processing, image
Pixload
Image Payload Creating/Injecting tools
Stars: ✭ 586 (+7225%)
Mutual labels:  image-processing, image
Ueberzug
ueberzug is a command line util which allows to display images in combination with X11
Stars: ✭ 711 (+8787.5%)
Mutual labels:  image, images
Watimage
🖼 PHP image manipulation class
Stars: ✭ 25 (+212.5%)
Mutual labels:  image, image-manipulation
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 (+9425%)
Mutual labels:  image-processing, image
Cometa

CodeFactor Codacy Codacy Badge Build Status Known Vulnerabilities Greenkeeper badge

Super fast, on-demand and on-the-fly, image processing.

Requirements

Cometa uses sharp for image manipulation.

Installation

  • Clone this repository (navigate to its location),
  • copy the .env.example to .env and fill the required values,
  • install what is needed: npm i,
  • test: npm test,
  • run: npm start

Cometa should now be running on the specified port.

Environment variables

  • COMETA_CLUSTER: Whether the application should make use of all available CPUs or not.
  • COMETA_PORT: Port on which your application will listen. Defaults to 9090.
  • COMETA_KEY: A unique key used for request signature validation.
  • COMETA_ALLOW_UNAUTHORIZED: Whether unsigned requests are allowed or not.
  • COMETA_REQUEST_TIMEOUT: (milliseconds) before timing out URL image requests.
  • COMETA_LOG_NAME: The name for your logs (if enabled). Defaults to 'Cometa'.
  • COMETA_LOG_LEVEL: The minimal level at which to log. See pino's log levels Defaults to 'info'
If using with S3:
  • AWS_ACCESS_KEY: Your AWS access key.
  • AWS_ACCESS_SECRET: Your AWS access secret.
  • AWS_BUCKET: The name of your S3 bucket.
  • AWS_REGION: Your AWS service region.

Usage

With S3

If, for example, in your AWS_BUCKET bucket, you have a folder named cometa with an image called superlight.jpg, your request will be:

GET /s3/cometa/superlight.jpg

With a URL

Just provide the URL of the image you are requesting:

GET /url/http://images.google.com/cars.jpg

Query parameters

  • w || width: (integer) Output width,
  • h || height: (integer) Output height,
  • q || quality: (integer) Output image quality. Defaults to 80, ignored on png output.

Input formats

Supported input formats are: webp, png, tiff and jpeg (aka jpg).

Output formats

Supported output formats are: webp, png, tiff, and jpeg (aka jpg).

Simply append the required output format to URL:

GET /s3/cometa/superlight.jpg.webp
GET /url/http://images.google.com/cars.jpg.webp
// Outputs webp

GET /s3/cometa/superlight.jpg.png
GET /url/url=http://images.google.com/cars.jpg.png
// Outputs png

Authentication

Take, for example:

GET /s3/cometa/superlight.jpg?width=200&height=200

Malicious users could easily overload your server by making thousands of consecutive requests with varying widths and heights.

Luckily, Cometa provides a way of authenticating the request -and we strongly recommend you use it.

Authenticate your request by computing a SHA-1 hmac signature, with your COMETA_KEY and pass it to the request.

Signature generation

const url = '/s3/cometa/superlight.jpg?width=200&height=200';
const signature = crypto
  .createHmac('sha1', COMETA_KEY)
  .update(url)
  .digest('hex');

You may pass the signature as a query parameter:

GET /s3/cometa/superlight.jpg?width=200&height=200&authorization=[signature]

or as a HTTP header:

headers {
  'Authorization': [signature]
}

Note: Allowing unsigned requests can be dangerous. Use at your own discretion

Take it for a spin

Deploy

Contribute

fork https://github.com/CometaFront/Cometa/

License

MIT

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].