masynchin
I currenly learning Elixir and want to manipulate images with it. I use :egd to calculate sizes of text image that I will render.
My code produces this error:
** (MatchError) no match of right hand side value: []
(egd 0.10.0) c:/expro/image_text/deps/egd/src/egd_font.erl:62: :egd_font.glyph/2
(egd 0.10.0) c:/expro/image_text/deps/egd/src/egd_render.erl:601: :egd_render.text_intervals/5
(egd 0.10.0) c:/expro/image_text/deps/egd/src/egd_render.erl:339: :egd_render.precompile_objects/1
(egd 0.10.0) c:/expro/image_text/deps/egd/src/egd_render.erl:317: :egd_render.precompile/1
(egd 0.10.0) c:/expro/image_text/deps/egd/src/egd_render.erl:39: :egd_render.binary/2
(egd 0.10.0) c:/expro/image_text/deps/egd/src/egd.erl:239: :egd.loop/1
My code:
defmodule ImageText do
@moduledoc """
Documentation for `ImageText`.
"""
def main() do
render_text("hello")
end
def font() do
:egd_font.load("lib/fonts/font.wingsfont")
end
def render_text(text) do
{image_width, image_height} = calculate_text_size(text)
image = :egd.create(image_width, image_height)
:egd.text(image, {0, 0}, font(), String.graphemes(text), :black)
:egd.save(:egd.render(image), "lib/image.png")
:egd.destroy(image)
end
def calculate_text_size(text) do
{font_width, font_height} = :egd_font.size(font())
{font_width * String.length(text), font_height}
end
end
lib/fonts/font.wingsfont.ttf is https://github.com/erlang/egd/blob/master/priv/fonts/6x11_latin1.wingsfont
Trending in Questions
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
Hello,
I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apply_graft/2 doesn’t rewrite an add_many sub-workflow’s deps on an add step. Grafted jobs cancel with “upstream job was deleted”
Version...
New
Other Trending Topics
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #security










Showing Posts 1 to 5- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
epilgrim
I’m afk, so I cannot check this, but have you tried using charlists instead of a bynary when calling load?
that would be changing the quotes to :egd_font.load(‘lib/fonts/font.wingsfont’)
usually this is the first source of troubles when interfacing with erlang
masynchin
I replaced font() with:
But it doesn’t change error. You say
and I replaced
String.graphemes(text)withString.to_charlist(text), now it produces following traceback:It looks like previous problem was solved but new one created
christhekeele
Welcome to the forum!
It looks like the examples for
:egd.text/5use the erlangstringtype (the double quote literal). This is shorthand for what Elixir calls a charlist, so that is what you will need to convert your binaries into. But you need to be using this for all your string input:"lib/fonts/font.wingsfont"text"lib/image.png"Additionally, you are using a literal atom
:black. The erl guides actually use an erlang variable for this,Black = egd:color({0,0,0})(lowercased barewords are atom literals in erlang, uppercase is variables). So I would replace the atom with:egd.color({0,0,0}).masynchin
Very thanks, now it works!
this should be rendered image, but I not allowed to upload it
christhekeele
Yay I’m so glad my shot in the dark worked!