2

我正在使用 ImageMagick(通过 MiniMagick Ruby Gem)来裁剪图像,我还在它的顶部添加了一个注释,但我希望它被镜像。

我知道 ImageMagick 有一个镜像图像的“翻转”命令,但我不确定如何生成文本、翻转它并将其组合到我的图像上。

这是我目前绘制文本的方式(非镜像)。此代码使用 MiniMagick,但它可以直接转换为实际的 ImageMagick 命令。

image.combine_options do |c|
  c.resize "1000"
  c.font Rails.root.join('app/assets/fonts/Menlo.ttc').to_s
  c.fill '#888888'
  c.pointsize '16'
  c.draw "text 0,0 '#{annotation}'"
end

如何修改或替换它以绘制镜像文本?

4

2 回答 2

1

首先,如果您真的有兴趣获得尽可能多的输入,您应该为您的 Minimagick 代码自己做“直接翻译成实际的 ImageMagick 命令” 。不是每个人都想先学习 Minimagick,然后才能提出他的建议。

其次,你没有告诉你希望你的文本以哪种方式镜像:左右?上下翻转?结合?

第三,尝试替换这两行

c.pointsize '16'
c.draw "text 0,0 '#{annotation}'"

通过这 3 行

c.pointsize '16'
c.draw "text 0,0 '#{annotation}'"
c.flop

或通过这 3 行

c.pointsize '16'
c.draw "text 0,0 '#{annotation}'"
c.flip

或通过这 4 行

c.pointsize '16'
c.draw "text 0,0 '#{annotation}'"
c.flip
c.flop
于 2012-08-13T19:17:53.620 回答
1

既然 Nathan 承认他只“熟悉”图像-flip并且-flop只对图像“熟悉”,那么让我们向他展示如何使用它来在未更改的图像上获得翻转和翻转的文本注释。

看这两个例子:

普通文本 镜像文本

左边是普通文本,右边是镜像文本(左右镜像 - 如果他想要这个,或者如果他想要上下镜像,Nathan 没有回答这个问题)。

它是怎么做的?

左侧图像的注释是使用以下命令完成的:

convert                   \
   logo:                  \
  -fill white             \
  -undercolor '#00000080' \
    \(                                  \
      -gravity west                     \
      -pointsize 32                     \
      -annotate +0+40                   \
       " Dude! Listen, don't argue... " \
    \)                                  \
  -scale 310x             \
   normal.png

所以这个结果是下一步的基础。在下一步中,我们将修改此命令以创建镜像文本注释。但是,由于我们不能直接编写镜像文本,所以我们使用了众多技巧中的一种:

  1. 首先镜像图像(first -flop)。
  2. 在镜像图像上写入普通文本。
  3. 将生成的图像再镜像一次(秒-flop)。这边走...
    • ...主图像恢复正常,
    • ...注释文本现在被镜像。

这导致了左图的注释命令

convert                   \
   logo:                  \
  -flop                   \
  -fill white             \
  -undercolor '#00000080' \
    \(                                  \
      -gravity east                     \
      -pointsize 32                     \
      -annotate +0+40                   \
       " Dude! Listen, don't argue... " \
    \)                                  \
  -flop                   \
  -scale 310x             \
   mirrored.png

容易吧?

(请注意我们还必须如何将重力从西向东更改,以便文本出现在同一个位置......)

现在将这个算法翻译成 Minimagick 的语言是 Nathan 自己的工作。

于 2012-08-22T23:18:36.677 回答