我正在使用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
如何修改或替换它以绘制镜像文本?
答案 0 :(得分: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
答案 1 :(得分: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
所以这个结果是下一步的基础。在下一步中,我们将修改此命令以创建镜像文本注释。但是,由于我们无法直接编写镜像文本,因此我们在袖子中使用了许多技巧之一:
-flop
)。-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
简单,嗯?
(请注意我们如何将重力从西向东改变,以便文本出现在同一地点......)
现在,Nathan自己的工作就是将这个算法翻译成Minimagick的语言。