Mogrify
Image processing in Elixir (ImageMagick command line wrapper)
Install / Use
/learn @elixir-mogrify/MogrifyREADME
Mogrify
An Elixir wrapper for ImageMagick command line.
Documentation: https://hexdocs.pm/mogrify/
Requirements
You must have ImageMagick installed of course.
Installation
Add this to your mix.exs file, then run mix do deps.get, deps.compile:
def deps do
{:mogrify, "~> 0.9.3"}
end
Configuration
Configure the ImageMagick executable paths (optional):
Configure mogrify command:
config :mogrify, mogrify_command: [
path: "magick",
args: ["mogrify"]
]
Configure convert command:
config :mogrify, convert_command: [
path: "magick",
args: ["convert"]
]
Configure identify command:
config :mogrify, identify_command: [
path: "magick",
args: ["identify"]
]
Examples
Thumbnailing:
import Mogrify
# This does operations on an original image:
open("input.jpg") |> resize("100x100") |> save(in_place: true)
# save/1 creates a copy of the file by default:
image = open("input.jpg") |> resize("100x100") |> save
IO.inspect(image) # => %Image{path: "/tmp/260199-input.jpg", ext: ".jpg", ...}
# Resize to fill
open("input.jpg") |> resize_to_fill("450x300") |> save
# Resize to limit
open("input.jpg") |> resize_to_limit("200x200") |> save
# Extent
open("input.jpg") |> extent("500x500") |> save
# Gravity
open("input.jpg") |> gravity("Center") |> save
Converting:
import Mogrify
image = open("input.jpg") |> format("png") |> save
IO.inspect(image) # => %Image{path: "/tmp/568550-input.png", ext: ".png", format: "png"}
Getting info:
import Mogrify
image = open("input.jpg") |> verbose
IO.inspect(image) # => %Image{path: "input.jpg", ext: ".jpg", format: "jpeg", height: 292, width: 300}
Getting reduced info in a "lighter" way (uses less memory):
import Mogrify
info = identify("input.jpg")
IO.inspect(info) # => %{format: "jpeg", height: 292, width: 300}
Using custom commands to create an image with markup:
import Mogrify
%Mogrify.Image{path: "test.png", ext: "png"}
|> custom("size", "280x280")
|> custom("background", "#000000")
|> custom("gravity", "center")
|> custom("fill", "white")
|> custom("font", "DejaVu-Sans-Mono-Bold")
|> custom("pango", ~S(<span foreground="yellow">hello markup world</span>))
|> create(path: ".")
Plasma backgrounds:
import Mogrify
%Mogrify.Image{path: "test.png", ext: "png"}
|> custom("size", "280x280")
|> custom("seed", 10)
|> custom("plasma", "fractal")
Creating new images: See mogrify_draw for an example of generating a new image from scratch.
Changelog
See the changelog for important release notes between Mogrify versions.
Copyright and License
Copyright (c) 2014 Dmitry Vorotilin
Mogrify source code is licensed under the MIT License.
Related Skills
node-connect
339.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
