/thumbor-client-ex

Client to thumbor using Elixir.

Primary LanguageElixirMIT LicenseMIT

Build Status

ThumborClient

This package is a client to generate URLs to Thumbor using Elixir language.

Installation

The package can be installed by adding thumbor_client to your list of dependencies in mix.exs:

def deps do
  [
    {:thumbor_client, "~> 0.5.0"}
  ]
end

Usage

In safe mode

iex> client = ThumborClient.client("my_secret_token")
iex> client.(%{image: "path/to/image.jpg", width: 500, height: 500})
"1_6x25QaeExcQVmtuNyrr_lOs-0=/500/500/path/to/image.jpg"

In unsafe mode

iex> client = ThumborClient.client()
iex> client.("%{image: "path/to/image.jpg", width: 500, height: 500})
"unsafe/500/500/path/to/image.jpg"

Another way to generate

The method client("key") is recommended if you will generate multiple images in same function. If you prefer, you can call the method generate without this HOF.

iex> ThumborClient.generate(%{image: "image.jpg", width: 500, height: 500}, "my_secret_token")
# The last parameter is optional, if not exist should use unsafe mode

Options

Option Default Value Description
trim: (bool) false Removes surrounding space in image using top-left pixel color unless specified otherwise
crop: (list) nil Manually crop the image using the coordinates from the top-left and bottom-right corner of the cropping rectangle
meta: (bool) false Instead of get the image, get all meta data informations in image returning using json
fit: (atom|nil) nil The fit argument specifies that the image should not be auto-cropped and auto-resized to be EXACTLY the specified size. Possible values: :fit_in, :adaptive_fit_in, :full_fit_in, :adaptive_full_fit_in
width: (integer) 0 Final width of image
height: (integer) 0 Final height of image
flip: (bool) false Flip image horizontaly
flop: (bool) false Flip image verticaly
halign: (atom)   :center       Orientation to crop horizontaly. Possible values: :left, :center, :right                                                                                                                          
valign: (atom)   :center       Orientation to crop verticaly. Possible values: :top, :center, :bottom                                                                                                                            
smart: (bool) false Use Thumbor algorithms to crop using facial recognition process
filters: (list) [] Adding filters to image. More details bellow
image: (string) nil Path of image. Can be external.

Filters

You can see a big list of filters in official Thumbor documentation. You must set a list of strings with values.

Examples of usage:

Brightness

ThumborClient.generate(%{filters: ["brightness(40)"], width: 400, height: 300, path: "/path/image.jpg"})

Blur

ThumborClient.generate(%{filters: ["blur(40)"], width: 400, height: 300, path: "/path/image.jpg"})

Grayscale

ThumborClient.generate(%{filters: ["grayscale()"], width: 400, height: 300, path: "/path/image.jpg"})

Multiple filters

ThumborClient.generate(%{filters: ["grayscale()", "rotate(90)", "saturate(20)"], width: 400, height: 300, path: "/path/image.jpg"})

Docs

The docs can be found at https://hexdocs.pm/thumbor_client.