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(www.mywebsite.com/user/foo), 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")