Gi (Gi v0.2.1) View Source

Manipulating Graphics Interfacing

Link to this section Summary

Functions

Combine multiple images into one

Get information of image.

Mogrify image with option.

Opens image source, return Gi.Image.t() | Gi.Error.t().

Link to this section Functions

Link to this function

gm_composite(image, list_path)

View Source

Specs

gm_composite(Gi.Image.t(), []) :: Gi.Image.t()

Combine multiple images into one

Example

# Combine multiple images into one
iex>  Gi.open("test/frame.png")
...>  |> Gi.gm_composite(["test/example.jpg","test/save.png"])
%Gi.Image{
  animated: false,
  dirty: %{},
  ext: ".png",
  format: nil,
  frame_count: 1,
  height: nil,
  list_command: [],
  path: "test/save.png",
  width: nil
}

Specs

gm_identify(Gi.Image.t()) :: Gi.Image.t()

Get information of image.

Example

iex>  Gi.open("test/example.jpg")
...>  |> Gi.gm_identify
%Gi.Image{
  animated: false,
  dirty: %{},
  ext: ".jpg",
  format: "JPEG (Joint Photographic Experts Group JFIF format)",
  frame_count: 1,
  height: 312,
  list_command: [],
  path: "test/example.jpg",
  width: 820
}

Specs

gm_mogrify(Gi.Image.t() | Gi.Error.t(), Keyword.t()) ::
  Gi.Image.t() | Gi.Error.t()

Mogrify image with option.

Options

  • :resize - Resize image to value "WxH" or "WxH!".
    • "WxH" keep ratio of the original image.
      • Example: "400x300", "150x100" ...
    • "WxH!" exact size.
      • Example: "300x200!", "200x100!" ...
  • :format - Format image to value as jpg, png, webp...
  • :draw - Draw object on image:
    • "text x,y string" - draw string at position x,y.
      • Example: "text 150,150 'Theta.vn'"
    • "image Over x,y,w,h file" - draw file on image at position x,y with width w va height h.
      • Example: "image Over 0,0,400,600 d/logo.png"
  • :pointsize - pointsize of the PostScript, X11, or TrueType font for text, value as integer.

Example

# Resize image to width x height with ratio (WxH)
iex>  Gi.open("test/example.jpg")
...>  |> Gi.gm_mogrify(resize: "200x100")
...>  |> Gi.save(path: "test/example_resize.jpg")

iex>  Gi.open("test/example_resize.jpg")
...>  |> Gi.gm_identify
%Gi.Image{
  animated: false,
  dirty: %{},
  ext: ".jpg",
  format: "JPEG (Joint Photographic Experts Group JFIF format)",
  frame_count: 1,
  height: 76,
  list_command: [],
  path: "test/example_resize.jpg",
  width: 200
}

# Resize image to width x height (WxH!)
Gi.open("example.jpg") # example.jpg (300x200)
|> Gi.gm_mogrify(resize: "200x100!")
|> Gi.save() # => example.jpg (200x100)

# Format image to jpg, png, webp, ...
Gi.open("example.jpg")
|> Gi.gm_mogrify(format: "webp")
|> Gi.save() # => create new file "example.webp"

# Draw text on image "text x,y string"
Gi.open("example.jpg")
|> Gi.gm_mogrify(draw: "text 150,150 'Lang Pham'")
|> Gi.save()

# Draw text on image "text x,y string" with pointsize,
Gi.open("example.jpg")
|> Gi.gm_mogrify([pointsize: 30, draw: "text 150,150 'Lang Pham'"])
|> Gi.save()

# Draw image on image "image Over x,y,w,h file"
Gi.open("example.jpg")
|> Gi.gm_mogrify(draw: "image Over 100,100,200, 200 dir/logo.a")
|> Gi.save()

# Multi utilities
Gi.open("example.jpg")
|> Gi.gm_mogrify([resize: "300x200", draw: "text 150,150 'Theta.vn'"])
|> Gi.save()

Specs

open(binary()) :: Gi.Image.t() | Gi.Error.t()

Opens image source, return Gi.Image.t() | Gi.Error.t().

Parameters

  • path: path to file image.

Example

iex>  Gi.open("test/example.jpg")
%Gi.Image{
  animated: false,
  dirty: %{},
  ext: ".jpg",
  format: nil,
  frame_count: 1,
  height: nil,
  list_command: [],
  path: "test/example.jpg",
  width: nil
}

Specs

Save image.

Options

  • :path - Value as path. Save as image to path

Example

iex>  Gi.open("test/example.jpg")
...>  |> Gi.save()
%Gi.Image{
  animated: false,
  dirty: %{},
  ext: ".jpg",
  format: nil,
  frame_count: 1,
  height: nil,
  list_command: [],
  path: "test/example.jpg",
  width: nil
}

iex>  Gi.open("test/example.jpg")
...>  |> Gi.save(path: "test/new_example.jpg")
%Gi.Image{
  animated: false,
  dirty: %{},
  ext: ".jpg",
  format: nil,
  frame_count: 1,
  height: nil,
  list_command: [],
  path: "test/new_example.jpg",
  width: nil
}