Current section

Files

Jump to
vix lib script.exs
Raw

lib/script.exs

alias Vix.Vips.Image
alias Vix.Vips.Operation
input = "./test/images/puppies.jpg"
# input = "./pexels-tommes-frites-9283080.jpg"
{:ok, img} = Image.new_from_file(input)
max_height = 10_000
# change as required
# text width is half of input image width
scale = 0.5
{:ok, {text, _}} =
Operation.text(
~S(<span foreground="#002299">www.mywebsite.com/user/foo</span>),
width: round(Image.width(img) * scale),
rgba: true,
# have large max height to let libvips auto set it
height: max_height
)
pos_x = Image.width(img) / 2 - Image.width(text) / 2
pos_y = Image.height(img) / 2 - Image.height(text) / 2
{:ok, overlay} =
Operation.composite2(img, text, :VIPS_BLEND_MODE_OVER, x: round(pos_x), y: round(pos_y))
:ok = Image.write_to_file(overlay, "out.jpg")
# :ok =
# Operation.extract_area!(
# overlay,
# 0,
# round(Image.height(img) / 2),
# Image.width(img),
# round(Image.height(img) / 2) - 1
# )
# |> Image.write_to_file("out.jpg")