绘制文本仅仅是ImageMagick神奇之旅的开始。在这里,我们一起来看看IM最基本的文本绘图操作,包括创建花哨的字体和特效,然后你就可以在你的网页和文件中使用了。 复合字体效果 用朴素简单的文本来作为图像是非常无趣的,但是通过很少的工作对文本进行覆盖和染色,就可以产生一些很漂亮和奇妙的效果。 想要做到这一点,我们需要对文本进行多次绘制操作、覆盖不同的颜色、进行拼接、并从大量图像处理选项中找到一些合适的方法来处理文本,让它们产生更加丰富有趣的特效,而不是原来纯粹的枯燥的文字。 请注意,不仅仅包括我们对文本使用的字体,还有其它那些大量的处理操作很多都可以用于其它图像之中。特别是,你可以将它们用于剪贴画图像的处理。 平铺字体:你并不会被限制只能使用一个固定的颜色来绘制字体。而可以在字体中使用的平铺拼接图案。 convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \ -tile pattern:checkerboard -annotate +28+68 'Anthony' \ font_tile.jpg ![]() 请注意,上面命令中的-tile设置会覆盖任何-draw选项中-fill设置的颜色。 ![]() 平铺图像也可以相对于图像背景的原点进行偏移,只用在图像的-tile选项前指定-origin设置就可以实现。这样平铺图像就会按照指定的偏移量在平铺拼接时进行偏移了。 梯度渐变字体:平铺拼接操作不只是用于小的那部分区域,而且可以用于整个画布尺寸的区域。 convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \ -tile gradient: -annotate +28+68 'Anthony' \ font_gradient.jpg ![]() 倒转的字体: convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \ -fill Navy -annotate 180x180+300+35 'Anthony' \ font_upsidedown.jpg ![]() 实心阴影:对文本进行两次绘制操作,并且加入一定的偏移量,你就可以生产最简单的实心阴影边缘效果了。 convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \ -fill black -draw "text 28,68 'Anthony'" \ -fill white -draw "text 25,65 'Anthony'" \ font_shadow.jpg ![]() 倾斜的阴影:因为注释(-annotate)字体绘制选项可以在垂直维度和水平维度上分别进行选择操作,所以你就可以为字体指定一些奇怪的旋转方式,如“回转”或“倾斜”等。这为我们生成怪异奇妙的阴影或使自己的字体变为斜体或倾斜状态提供了极大的方便。 convert -size 320x115 xc:lightblue -font Candice -pointsize 72 \ -fill Navy -annotate 0x0+12+55 'Anthony' \ -fill RoyalBlue -annotate 0x130+25+80 'Anthony' \ font_slewed.jpg ![]() 可以参考一张表格,其中总结了文本旋转的效果,见Annotate Text Option。 当然“Candice”字体并不是最适合这种阴影效果的方案,我们可能还需要添加其它一些细节效果来使结果看起来更加具有3D图像的感觉。例如你可以参考Blurring the shadow with distance。 倾斜字体:你还可以使用-draw选项来实现字体倾斜,虽然这种方法有点麻烦,因为它涉及到额外的MVG(Magick矢量图形)的操作,要将绘制图像的表面进行扭曲。因为表面要被扭曲,那么我们在扭曲之前使用“translate”来设置字体的位置将会是个好主意。 convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \ -fill Navy -draw "translate 28,68 skewX -20 text 0,0 'Anthony'" \ font_slanted.jpg ![]() 可以参考一张表格,其中总结了文本旋转的效果,见Annotate Text Option。 当然“Candice”字体并不是最适合这种阴影效果的方案,我们可能还需要添加其它一些细节效果来使结果看起来更加具有3D图像的感觉。如果你发现了其它有趣的效果,那么请告诉我们,这样就可以与世界其它的爱好者一同分享你的成果了。 ![]() 印版字体:对字体进行三次绘制操作,分别用较深的颜色、较浅的颜色和原来的颜色,就可以实现印版一样的三维效果。 convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \ -fill black -annotate +24+64 'Anthony' \ -fill white -annotate +26+66 'Anthony' \ -fill lightblue -annotate +25+65 'Anthony' \ font_stamp.jpg 请注意最后一步文本绘制操作是如何将字体的中间部分删除的。另外,这种方法只能在纯色背景中晚餐,请参阅Using a Mask Image,看看我们如何在随机的背景下完成这种效果,而不是纯色背景。 如果你交换两种颜色的位置,就可以得到一个向上凸出的字体效果,而不是一个向下凹陷的字体效果。 堆叠或三维块字体:可以通过重复多次进行字体绘制并加入偏移量来生成。 convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \ -fill gray -annotate +29+69 'Anthony' \ -annotate +28+68 'Anthony' \ -annotate +27+67 'Anthony' \ -annotate +26+66 'Anthony' \ -annotate +25+65 'Anthony' \ -annotate +24+64 'Anthony' \ -fill navy -annotate +23+63 'Anthony' \ font_extrude.jpg ![]() 请注意,这不是一个简单的阴影效果,而是让绘制的字体呈现出适当的厚度。 这种方法就是不断的重复绘制,并且不仅可以对文本使用,还可以用于任何具有形状的图像。你还可以参考另一个例子Adding Thickness to a Thumbnail。 轮廓字体:我们可以对多个绘制的文本使用小位置的偏移量,来创建文本字体的轮廓效果。 |
ImageMagick中文使用手册——复合字体效果
最新推荐文章于 2021-04-01 21:50:21 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)