【问题标题】:Generating initials avatar with Elixir [closed]使用 Elixir 生成首字母头像[关闭]
【发布时间】:2015-11-19 22:36:35
【问题描述】:

我正在开发 Elixir,并希望提供头像服务。如果用户没有头像,想要制作一个带有姓名首字母的头像,如下所示:

我真的不知道从哪里开始或如何做到这一点。

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    您可以使用ImageMagick 来执行此操作。只需通过System.cmd 调用convert 命令并将选项传递给它。这是一个简单的示例,如何生成与您发布的图像相似的图像。我将把微调留给你。

    def generate(outfile, initials) do
      size = 512
      resolution = 72
      sampling_factor = 3
      System.cmd "convert", [
        "-density", "#{resolution * sampling_factor}",                # sample up
        "-size", "#{size*sampling_factor}x#{size*sampling_factor}",   # corrected size
        "canvas:#E0E0E0",                                             # background color
        "-fill", "#6D6D6D",                                           # text color
        "-font", "/Library/Fonts/Roboto-Bold.ttf",                    # font location
        "-pointsize", "300",                                          # font size
        "-gravity", "center",                                         # center text
        "-annotate", "+0+#{25 * sampling_factor}", initials,          # render text, move down a bit
        "-resample", "#{resolution}",                                 # sample down to reduce aliasing
        outfile
      ]
    end
    

    例如这个

    generate('out.png', 'JD')
    

    会生成如下图片:

    【讨论】:

    • 不适用于“WW”之类的首字母缩写词。如果没有点大小,imagemagick 会尝试计算最佳拟合点大小。但我发现,ImageMagick 正在制作奇怪的东西。如果你有类似“MR”的东西,那么重心就不能正常工作。在 -trim 之后,它会删除“R”右侧的一部分。
    【解决方案2】:

    使用Mogrify。这是 Elixir-ImageMagick 的集成。

    【讨论】:

      猜你喜欢
      • 2011-11-11
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      相关资源
      最近更新 更多