Packages
vix
0.15.1
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.1
0.33.0
0.32.0
0.31.1
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.1
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.1
0.6.0
0.5.0
0.4.0
0.3.0
0.2.1
0.2.0
retired
0.1.0
NIF based bindings for libvips
Current section
Files
Jump to
Current section
Files
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")