使用 Elixir Mogrify 向图像添加文本

Adding text to an image with Elixir Mogrify

我在使用 Elixir 中的 Mogrify 包时遇到问题。我有一张图片,我想在其中添加文字。由于某种原因,图像将打开并保存副本而没有任何问题,但我无法以任何方式更改副本。

    img_url = to_string(:code.priv_dir(:jobs)) <> "/tristar.png"
    save_url = to_string(:code.priv_dir(:jobs)) <> "/tristar_copy.png"

    Mogrify.open(img_url)
    |> Mogrify.custom("pointsize", 200)
    |> Mogrify.custom("gravity", "North")
    |> Mogrify.custom("annotate", "+0,+100 'Testing'")
    |> IO.inspect(label: "\n===== Image Pre-Save =============================================")
    |> Mogrify.save(path: save_url)

Iex 中的输出如下所示:

===== Image Pre-Save =============================================:
%Mogrify.Image{
  animated: false,
  buffer: nil,
  dirty: %{},
  ext: ".png",
  format: nil,
  frame_count: 1,
  height: nil,
  operations: [
    {"pointsize", 200},
    {"gravity", "North"},
    {"annotate", "+0,+100 'Testing'"}
  ],
  path: "/code/elixir/_build/dev/lib/jobs/priv/tristar.png",
  width: nil
}
%Mogrify.Image{
  animated: false,
  buffer: nil,
  dirty: %{},
  ext: ".png",
  format: nil,
  frame_count: 1,
  height: nil,
  operations: [],
  path: "/code/elixir/_build/dev/lib/jobs/priv/tristar_copy.png",
  width: nil
}

我试过使用 custom 添加填充和描边。我试过使用 labeldraw textannotate。最后保存的图片只是原图的复制。

您距离可行的解决方案只差一个逗号:

"+0,+100 'Testing'" 更改为 "+0+100 'Testing'"

在花了很多时间解决这个问题后,我至少发现了我遇到的问题,我没有为 imagemagick 安装字体,

我通过替换此文件中的 <include file="type-ghostscript.xml" /> 来修复它:usr/local/Cellar/imagemagick/7.0.10-7/etc/ImageMagick-7/type.xml <include file="type-apple.xml" />

然后编辑 /usr/local/Cellar/imagemagick/7.0.10-7/etc/ImageMagick-7/type-apple.xml 在此文件中搜索并用 /System/Library/Fonts/Supplemental

替换所有字形路径