ImageMagick中文使用手冊——複合字體效果

繪製文本僅僅是ImageMagick神奇之旅的開始。在這裏,我們一起來看看IM最基本的文本繪圖操作,包括創建花哨的字體和特效,然後你就可以在你的網頁和文件中使用了。
     
複合字體效果
     用樸素簡單的文本來作爲圖像是非常無趣的,但是通過很少的工作對文本進行覆蓋和染色,就可以產生一些很漂亮和奇妙的效果。
     想要做到這一點,我們需要對文本進行多次繪製操作、覆蓋不同的顏色、進行拼接、並從大量圖像處理選項中找到一些合適的方法來處理文本,讓它們產生更加豐富有趣的特效,而不是原來純粹的枯燥的文字。
     請注意,不僅僅包括我們對文本使用的字體,還有其它那些大量的處理操作很多都可以用於其它圖像之中。特別是,你可以將它們用於剪貼畫圖像的處理。
     平鋪字體:你並不會被限制只能使用一個固定的顏色來繪製字體。而可以在字體中使用的平鋪拼接圖案。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -tile pattern:checkerboard   -annotate +28+68 'Anthony' \
                font_tile.jpg
wordPic1.gif 
     請注意,上面命令中的-tile設置會覆蓋任何-draw選項中-fill設置的顏色。
wordPic2.gif 如果使用的IM v6.3.2版本,那麼也可以使用-fill設置來指定一張平鋪圖像,但是這種用法並不推薦使用,因爲許多其它選項會用到-fill設置中的顏色,但它們並不支持平鋪圖像,這時就會使用默認的“黑色”來代替。
     平鋪圖像也可以相對於圖像背景的原點進行偏移,只用在圖像的-tile選項前指定-origin設置就可以實現。這樣平鋪圖像就會按照指定的偏移量在平鋪拼接時進行偏移了。
     梯度漸變字體:平鋪拼接操作不只是用於小的那部分區域,而且可以用於整個畫布尺寸的區域。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -tile gradient:   -annotate +28+68 'Anthony' \
                font_gradient.jpg
wordPic3.gif 
     倒轉的字體: 
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -fill Navy     -annotate 180x180+300+35 'Anthony' \
                font_upsidedown.jpg
wordPic4.gif 
     實心陰影:對文本進行兩次繪製操作,並且加入一定的偏移量,你就可以生產最簡單的實心陰影邊緣效果了。
        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
wordPic5.gif 
     傾斜的陰影:因爲註釋(-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
wordPic6.gif 
     可以參考一張表格,其中總結了文本旋轉的效果,見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
wordPic7.gif 
     可以參考一張表格,其中總結了文本旋轉的效果,見Annotate Text Option。
     當然“Candice”字體並不是最適合這種陰影效果的方案,我們可能還需要添加其它一些細節效果來使結果看起來更加具有3D圖像的感覺。如果你發現了其它有趣的效果,那麼請告訴我們,這樣就可以與世界其它的愛好者一同分享你的成果了。
wordPic8.gif “-annotate”和“-draw skew”命令實際上都可以完成繪圖表面X和Y軸的旋轉操作。並且效果和在現有的圖像上使用“-shear”選項不同,它們會延長圖像的傾斜軸,所以使用這些選項不會導致圖像的高度(或寬度)發生改變。
     印版字體:對字體進行三次繪製操作,分別用較深的顏色、較淺的顏色和原來的顏色,就可以實現印版一樣的三維效果。 
        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
wordPic10.gif 
     請注意,這不是一個簡單的陰影效果,而是讓繪製的字體呈現出適當的厚度。
     這種方法就是不斷的重複繪製,並且不僅可以對文本使用,還可以用於任何具有形狀的圖像。你還可以參考另一個例子Adding Thickness to a Thumbnail。
     輪廓字體:我們可以對多個繪製的文本使用小位置的偏移量,來創建文本字體的輪廓效果。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -fill black  -annotate +24+64 'Anthony' \
                             -annotate +26+64 'Anthony' \
                             -annotate +26+66 'Anthony' \
                             -annotate +24+66 'Anthony' \
                -fill white  -annotate +25+65 'Anthony' \
                font_outlined.jpg
wordPic11.gif 
     這種方法也需要進行多次重複操作,而且並不是產生輪廓效果的最好解決方案。
     因爲ImageMagick程序還允許你使用-stroke選項來繪製字體的輪廓,所以我們可以有更好的解決方案。(見下面的-stroke字體)。
     無論如何像這樣的多次重繪操作,用來爲預先準備的剪貼畫圖像生成輪廓是非常方便的,並且你可以在互聯網上找到很多這樣的圖像。並且這項技術對於其它不能使用-stroke選項的圖形庫和處理程序(如PHP中的GD程序等)也是非常有用的。
     另一個選擇這種輪廓風格用於顯示的原因是,如果對於非常尖銳的字體,那麼這種輪廓顯示結果可能會更好。
     例如,我們在這裏進行了9次文本繪製,來顯示字體中的尖銳點。並且把輪廓繪製得粗一些。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                 -draw "fill black text 27,67 'Anthony' \
                                   text 25,68 'Anthony' \
                                   text 23,67 'Anthony' \
                                   text 22,65 'Anthony' \
                                   text 23,63 'Anthony' \
                                   text 25,62 'Anthony' \
                                   text 27,63 'Anthony' \
                                   text 28,65 'Anthony' \
                        fill white text 25,65 'Anthony' " \
                font_outlined_12.jpg
wordPic12.gif 
     你同時也可以注意到-fill選項設置的顏色,也可以在-draw選項中進行修改。
     多色輪廓:這種技術非常有用的原因就是,你可以不用在繪製字體輪廓時被限制只使用一種顏色。我們非常精心的設計了繪製流程,一共對字體仔細地進行了12次重繪操作並且使用了5中不同的顏色,才生成下面的彩色凸出狀效果的字體,並進行了一些邊緣顏色平滑操作。
        convert -size 320x100 xc:lightblue \
                -font Candice -pointsize 72  -gravity center \
                -draw "fill navy         text  2,2  'Anthony' \
                       fill navy         text  0,3  'Anthony' \
                       fill navy         text  3,0  'Anthony' \
                       fill dodgerblue   text  0,2  'Anthony' \
                       fill dodgerblue   text  2,0  'Anthony' \
                       fill dodgerblue   text -2,2  'Anthony' \
                       fill dodgerblue   text  2,-2 'Anthony' \
                       fill lavender     text -2,-2 'Anthony' \
                       fill lavender     text  0,-3 'Anthony' \
                       fill lavender     text -3,0  'Anthony' \
                       fill skyblue      text  0,-2 'Anthony' \
                       fill skyblue      text -2,0  'Anthony' \
                       fill blue         text  0,0  'Anthony' " \
                font_colourful.jpg
wordPic13.gif 
     其實還有更好的方法可以用來創建這樣一個凸出效果的字體,而且這個工作非常簡單,只需要使用幾種顏色,而不是整個範圍的顏色。
     字體輪廓(Stroke):-stroke選項設置允許你直接繪製字體的輪廓。但是通常情況下,輪廓的顏色都設置爲無色(none),所以就像沒有使用一樣。而輪廓的寬度可以使用-strokewidth選項來變化,它的默認值爲1。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -fill white  -stroke black  -annotate +25+65 'Anthony' \
                font_stroke.jpg
wordPic14.gif 
     下面是將邊框寬度設置爲3的一個例子。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -fill white -stroke black -strokewidth 3 \
                -annotate +25+65 'Anthony'        font_stroke_3.jpg
wordPic15.gif 
     請注意,其中輪廓的顏色不僅會蠶食(遮蔽)字體外面的背景顏色,同時也會蠶食字體內部的顏色。瞭解更多詳細信息,請參閱Stroke and Stroke Width Options。
     加寬的輪廓:通過第二次重繪字體,並且沒有開啓-stroke選項,那麼線條內部的部分將被刪除,創建出一個更漂亮的加寬字體輪廓。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 -fill white \
                -stroke black -strokewidth 5 -annotate +25+65 'Anthony' \
                -stroke none                 -annotate +25+65 'Anthony' \
                font_stroke_thick.jpg
wordPic16.gif 
     我們甚至還可以進一步使用-stroke選項,在Stroke and StrokeWidth Options中將會更深入地探討這個選項。
     細的輪廓:通過關閉填充(-fill)顏色,你可以僅僅只在圖像中留下字體的輪廓。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -fill none  -stroke black   -annotate +25+65 'Anthony' \
                font_stroke_thin.jpg
wordPic17.gif 
     雙重輪廓:通過重繪文本並使用多個不同的輪廓寬度,可以產生出雙重輪廓的效果!第一次文本繪製,可以使用任何填充顏色來填充字體裏面的部分,或者使用無色(none)就像我們上面那樣只留下背景色。但是,最後一次的文本重繪操作的填充顏色必須設置爲無色(none),否則就會無法正常工作。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
             -fill none  -stroke black  -strokewidth 3  -annotate +25+65 'Anthony' \
             -fill none  -stroke white  -strokewidth 1  -annotate +25+65 'Anthony' \
             font_stroke_double.jpg
wordPic18.gif 
     與前面介紹的印版字體不同的是,上面這種方法不要求中間部分的字體被刪除。因此,這種方法可以在任何背景上工作,而不會產生其它的問題。
     迷幻字體:通過與上面類似的重繪方式,慢慢地減少輪廓的寬度,然後不斷交換顏色,就可以很容易地生成迷幻輪廓效果了。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 -fill white \
                -stroke black -strokewidth 25 -annotate +25+65 'Anthony' \
                -stroke white -strokewidth 20 -annotate +25+65 'Anthony' \
                -stroke black -strokewidth 15 -annotate +25+65 'Anthony' \
                -stroke white -strokewidth 10 -annotate +25+65 'Anthony' \
                -stroke black -strokewidth  5 -annotate +25+65 'Anthony' \
                -stroke none                  -annotate +25+65 'Anthony' \
                font_psychedelic.jpg
wordPic19.gif 
     你還可以讓它更加的迷幻,通過使用互相沖突的顏色,不同的寬度間隔,甚至讓文字在中心附近做一些小的位置移動。儘管去實驗,看看你能想出什麼奇妙的效果。
     氣球效應:下面我進行了與上面“加粗輪廓字體”完全一樣的操作,但是純粹由於意外,在重新繪製字體時我使用了白色作爲輪廓顏色。這導致了一個有趣的字體放大效果,並且仍然有加粗的輪廓。這種“浮腫”的字體效果,彷彿像一個充滿氣的氣球。
     這表明如果你努力去實驗,總是會有所回報。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
            -fill black  -stroke black  -strokewidth 5  -annotate +25+65 'Anthony' \
            -fill white  -stroke white  -strokewidth 1  -annotate +25+65 'Anthony' \
            font_balloon.jpg
wordPic20.gif 
     連接的字體:通過對-kerning選項進行一些小的負數的設置(在IM v6.4.7-10版本加入的),並且繪製相同的字體兩次(像前面的例子一樣),你就可能會得到加粗字體的所有字符連接在一起的效果,從而產生了一個有趣的變化。
       convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
               -kerning -6  -strokewidth 4 -fill white \
               -stroke black   -annotate +28+68 Anthony \
               -stroke none    -annotate +28+68 Anthony \
            font_joined.jpg
wordPic21.gif 
     重疊的字體:產生重疊的字體效果其實只需要進行一點點變化,就是分別單獨的繪製每一個字符,這樣就可以生成每個字符覆蓋到前面字符上的變化效果了。
       convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
               -stroke black -strokewidth 4 -fill white \
               -stroke black -annotate  +28+68 A  -stroke none -annotate  +28+68 A \
               -stroke black -annotate  +90+68 n  -stroke none -annotate  +90+68 n \
               -stroke black -annotate +120+68 t  -stroke none -annotate +120+68 t \
               -stroke black -annotate +138+68 h  -stroke none -annotate +138+68 h \
               -stroke black -annotate +168+68 o  -stroke none -annotate +168+68 o \
               -stroke black -annotate +193+68 n  -stroke none -annotate +193+68 n \
               -stroke black -annotate +223+68 y  -stroke none -annotate +223+68 y \
               font_overlapped.jpg
wordPic22.gif 
     但是,這種方法就需要你(手動或使用自動腳本)爲每個字符確定適當的位置。每個字符本身的寬度可以通過生成標籤或字母來確定,而不需要進行任何的-strokewidth設置。請參閱Determining Font Metrics中的例子。
     注意,並不像使用-kerning設置(前面的例子)中簡單的固定值來確定每個字符的位置,上面的方法在生成每個字母時就設置了不同的座標值。例如,“t”和“h”字母之間只有一點點重疊,而在“n”和“y”字母之間則有更大的重疊。
     上下移動的字體:如果你使用繪製單個字符(重疊或者不重疊)進行更深入的發揮,那麼你還可以讓它們產生抖動或隨機模式的效果,尤其是使用不同的上下偏移設定。
     你甚至可以在此基礎上發揮到極致,以產生出特殊的效果,例如:
       convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
               -stroke black -strokewidth 4 -fill white \
               -stroke black -annotate  +26+80 A  -stroke none -annotate  +26+80 A \
               -stroke black -annotate  +95+63 n  -stroke none -annotate  +95+63 n \
               -stroke black -annotate +133+54 t  -stroke none -annotate +133+54 t \
               -stroke black -annotate +156+67 h  -stroke none -annotate +156+67 h \
               -stroke black -annotate +193+59 o  -stroke none -annotate +193+59 o \
               -stroke black -annotate +225+59 n  -stroke none -annotate +225+59 n \
               -stroke black -annotate +266+54 y  -stroke none -annotate +266+54 y \
               font_jittered.jpg
wordPic23.gif 
     模糊的字體:對字體使用-blur模糊選項可以產生字體顏色直線蔓延的效果。這個選項能讓你把圖像的顏色向各個方向發散。這就可以讓你產生出柔和的陰影,或者噴漆狀的效果。下面的例子表明,你可以使用-blur選項實現這個效果。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -fill navy  -annotate +25+65 'Anthony' \
                -blur 0x3   font_fuzzy.jpg
wordPic24.gif 
     請注意,當你使用-blur選項時,它將會作用於整個圖像。如果你想使用一張現有的圖像進行文字模糊,你將不得不單獨繪製字體(在透明背景上),然後再將它覆蓋到背景圖像中。
wordPic25.gif -blur(或-gaussian)選項可能會修改一個比你所希望的面積更大的區域。如果你的背景畫布不夠大,那麼可能會在使用這些選項時返回錯誤。如果圖像中發生了增加額外空間的情況,那麼就得使用-border選項,或對其設置工作半徑限制(選項的第一個參數)。
     同時,模糊圖像操作一般會使它後面的修剪(-trim)選項不起什麼效果。只要你對圖像使用了模糊操作,通常需要進行手動修剪或其它可能需要的調整。 
     模糊陰影:使用模糊的字體作爲陰影並設置一定的偏移量。請注意,我們特意使用了一個較大的模糊值。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -annotate +30+70 'Anthony'   -blur 0x4 \
                -fill white  -stroke black  -annotate +25+65 'Anthony' \
                font_shadow_fuzzy.jpg
wordPic26.gif 
     柔和的陰影:-shadow選項不僅將允許你在含有透明度的圖像中生成並定位柔和的模糊陰影,而且還允許你使用任何顏色,並設置普通的透明度水平。
        convert -size 300x100 xc:none -font Candice -pointsize 72 \
                -fill white  -stroke black  -annotate +25+65 'Anthony' \
                \( +clone -background navy  -shadow 70x4+5+5 \) +swap \
                -background lightblue -flatten  -trim +repage  font_shadow_soft.jpg
wordPic27.gif 
     關於-shadow選項的更多信息,請參閱Generating Shadows。
     對於IM v6.3.1版本,“montage”命令也可以在包含透明度的圖像中生成柔和的陰影圖形。這意味着你可以很容易的在圖像中添加帶陰影的標籤(label:)。
        montage -background none -fill white -font Candice \
                -pointsize 72 label:'Anthony' +set label \
                -shadow  -background lightblue -geometry +5+5 \
                font_montage_shadow.jpg
wordPic28.gif 
     但是,你不能對montage命令生成的陰影進行任何偏移量、顏色或陰影模糊程度的控制。
     柔和的輪廓:使用模糊的字體作爲輪廓邊框。這就像是使用原始字體的板子擋在噴槍前面形成的效果。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -annotate +25+65 'Anthony'    -blur 0x5 \
                -fill white  -annotate +25+65 'Anthony'   font_outline_soft.jpg
wordPic29.gif 
     需要注意的是字體邊緣顏色很淺,因爲不僅是字體的黑色進行了發散,而背景顏色也向裏面進行了發散,所以邊緣顏色中只有50%的黑色。
     解決這個問題的方法之一就是使用陰影輪廓,採用-level選項來調整與修復圖像亮度,雖然其中使用了一些非常先進的圖像處理技術。
     顏色更濃的柔和陰影:解決柔和輪廓邊緣較淺的另一種方式就是對具有很寬輪廓的字體進行模糊。這將有效地讓50%黑色的模糊點進一步遠離字體的邊緣。它甚至還可以允許使用更大的模糊值讓黑色進一步蔓延發散。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -stroke black -strokewidth 8 -annotate +25+65 'Anthony' -blur 0x8 \
                -fill white   -stroke none   -annotate +25+65 'Anthony' \
                font_denser_soft_outline.jpg
wordPic30.gif 
     使用這種方法生成的一個實際例子請參考Adding image labels to thumbnails,另外最後一個例子參考Annotating on Top of Images。
     隨距離變化的模糊陰影:通過介紹可變模糊映射,你現在可以使陰影的模糊程度根據陰影到字體的距離而發生變化。
     例如在這裏,我使用傾斜的字體陰影,然後對陰影進行模糊操作,讓它在上端並不模糊而在底部更加的模糊。
        convert -size 320x40 xc:lightblue  -font Candice -pointsize 72 \
                -fill RoyalBlue -annotate 0x125+20+0 'Anthony' \
                \( -size 320x45 gradient:black -append \) \
                -compose Blur -set option:compose:args 20x5+45 -composite \
                \( -size 320x60 xc:lightblue \
                   -fill Navy    -annotate 0x0+20+59   'Anthony' \) \
                +swap -append   font_var_blur.jpg
wordPic31.gif 
     請注意,我不僅僅是使用了一個循環模糊,因爲當光線照射到一個傾斜的表面上時會形成橢圓形而不是圓形。所以這種模糊效果也需要形成橢圓形。基本上,我使用了一個橢圓形的模糊變化來達到這種效果。
     最後一點,使用註釋(-annotate)選項中的角度參數來創建傾斜的文本(見-annotate選項的參數用法),可能不是產生這樣的初始三維陰影的最好辦法。基本上它不能讓陰影伸長或縮短,就像一個真正的陰影那樣,因爲它僅僅只能對陰影進行旋轉和傾斜。
     另一個更好的方法就是使用3個點的仿射(Affine)扭曲,可以讓你更好地控制陰影的位置(參見3d Shadows, using Affine Shears)。當然,你仍然需要使用漸變模糊的技術,讓圖像看起來是合理的。
     帶有斜面的字體:-shade選項可以用來產生非常漂亮的3D字體斜面和平滑彎曲的邊緣。
         convert -size 320x100 xc:black -font Candice -pointsize 72 \
                   -fill white   -annotate +25+65 'Anthony' \
                   -shade 140x60  font_beveled.jpg
wordPic32.gif 
     這比印版字體看起來效果更好,但是-shade選項只能產生灰度圖像。但另一方面,也還有很多方法可以替換上述灰度圖像的結果,不論你需要什麼樣的顏色。
     使用陰影來爲字體產生斜面效果的最大問題就是其中斜角的寬度並不是可以調節的。它基本上是一個大約5像素寬的固定值,無論你使用的字體尺寸是多少。
     錐形字體:通過採用新的形態距離方法(在IM v6.6.2版本中加入),並結合-shade選項生成的陰影,你就可以使整個字體看起來呈現一個三維山脊(錐形)的效果了。
     但是這還需要對形狀中的抗鋸齒像素進行一些特殊的處理,最後的效果就是產生一個山脊般的錐形字體。
       convert -size 320x100 xc:black -font Candice -pointsize 72 \
               -fill white   -annotate +25+65 'Anthony' \
               -gamma 2  +level 0,1000 -white-threshold 999 \
               -morphology Distance:-1 Euclidean:4,1000 -auto-level \
               -shade 135x30 -auto-level +level 10,90% font_conic.jpg
wordPic33.gif 
     通過加入自適應模糊(-adaptive-blur)選項,你就可以對上述結果圖像進行平滑處理,得到一個更漂亮並有奇怪光澤外觀的字體了。
       convert -size 320x100 xc:black -font Candice -pointsize 72 \
               -fill white   -annotate +25+65 'Anthony' \
               -gamma 2  +level 0,1000 -white-threshold 999 \
               -morphology Distance:-1 Euclidean:4,1000 -auto-level \
               -shade 135x30 -auto-level +level 10,90% \
               -adaptive-blur 0x2  font_conic_smoothed.jpg
wordPic34.gif 
     而將自適應模糊(-adaptive-blur)選項移動到-shade選項前使用,將導致字體的邊緣被模糊處理,而不是字體形狀的中央脊(骨架)。產生的結果就像是一個鋒利的脊狀字體壓到橡膠板上的樣子。
       convert -size 320x100 xc:black -font Candice -pointsize 72 \
               -fill white   -annotate +25+65 'Anthony' \
               -gamma 2  +level 0,1000 -white-threshold 999 \
               -morphology Distance:-1 Euclidean:4,1000 -auto-level \
               -adaptive-blur 0x2 \
               -shade 135x30 -auto-level +level 10,90%  font_conic_ridge.jpg
wordPic35.gif 
     使用另一種不同的距離內核,如切比雪夫(Chebyshev),將會在外觀更整齊的字體中產生更好的效果,如Arial系列的字體。
       convert -size 320x100 xc:black -font ArialBk -pointsize 70 \
               -fill white   -annotate +5+70 'Anthony' \
               -gamma 2  +level 0,1000 -white-threshold 999 \
               -morphology Distance:-1 Chebyshev:1,1000 -auto-level \
               -shade 135x30 -auto-level +level 10,90% font_chebyshev.jpg
wordPic36.gif 
     內錐字體:當然,你不必一定將距離函數應用到整個字體中,而是也可以將它僅僅限制在邊緣部分,只對字體內邊緣產生錐形效果。
       convert -size 320x100 xc:black -font Candice -pointsize 72 \
               -fill white   -annotate +25+65 'Anthony' \
               -gamma 2 +level 0,1000 -white-threshold 999 \
               -morphology Distance:5 Euclidean:4,1000  -level 0,5000 \
               -shade 135x30 -auto-level +level 10,90% font_inner_bevel.jpg
wordPic37.gif 
     拱形的字體:使用-wave選項(見詳情Sine Wave Displacement)可以將圖像的像素進行垂直轉移形成一個拱形。而垂直的形狀將仍然保持垂直狀態,繪製的字符將會被傾斜產生出拱形曲線。
         convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
         -fill navy  -annotate +25+65 'Anthony' \
         -background lightblue -wave -50x640 -crop x110+0+10 \
         font_wavy.jpg
wordPic38.gif 
     請注意,如果使用-wave選項來創建一個拱形,你需要使用的波長應該是圖像寬度的兩倍(2x320或640像素)。同時,因爲-wave選項還可能根據設定的振幅值在圖像上增加空白區域,所以在使用之後應該對圖像進行修改或裁剪去除這些部分。
     這是使文本成爲拱形的一個簡單、快速而且有效的方法。
     弧形字體:其實最普通的-distort選項也提供了使文本/圖像變形的其它方法。例如其中的“Arc”方法就可以使字體成爲真正的彎曲圓弧狀,而不僅僅是前面例子中垂直轉移的拱形。
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -fill navy -annotate +25+65 'Anthony' \
                -distort Arc 120  -trim +repage \
                -bordercolor lightblue -border 10  font_arc.jpg
wordPic39.gif 
     環形字體:你甚至還可以把它這種方法用得更極端一些,將文本扭曲爲一個完整的或近似完整的圓。
        convert -font Candice -pointsize 32 -background lightblue \
                -fill navy label:"Anthony's IM Examples" \
                -virtual-pixel background  -distort Arc 340 \
                font_circle.jpg
wordPic40.gif 
     參考Arc Distortion,還可以看到更多的可能和介紹。
     螺旋狀字體:通過在彎曲字體前添加一點旋轉,讓字體傾斜一個角度,就可以把環形轉換成螺旋狀的了。
        convert -font Candice -pointsize 32 -background lightblue \
                -fill navy  label:"Anthony's IM Examples" \
                -rotate 12 -virtual-pixel background -distort Arc 360 \
                -trim -bordercolor lightblue -border 5x5  font_spiral.jpg
wordPic41.gif 
     但是,圖像中文字的高度(徑向)仍然保持不變,它沒有被拉伸或壓縮,只是當它的字符越靠近中心時,就生產了越強的扭曲。你也可以解決這個問題,只要在應用Arc方法扭曲文本之前,使用perspective扭曲方法作爲文字旋轉操作的一部分來調整字體的高度就可以了。
     使用這種方法的問題就是,你只能進行一圈螺旋旋轉,但是通過採用多條線,並將它們小心的連接起來,你就可以生成多個螺旋了。
     如果你進行了嘗試,希望能提交給我一個例子?
     顫抖狀的字體:我們在上面的拱形字體中使用的-wave選項,也可以設置爲更高的頻率和較小的幅度,生成顫抖狀的字體。另外,還可以增加一些旋轉設置,甚至能產生出任何你喜歡角度的振動!
        convert -size 320x100 xc:lightblue -font Candice -pointsize 72 \
                -fill navy  -annotate +25+65 'Anthony' \
                -background lightblue -rotate 85  -wave 2x5   -rotate -85 \
                -gravity center  -crop 320x100+0+0 +repage font_vibrato.jpg
wordPic42.gif 
     如果需要更多的使用-distort選項的信息,可以參看Warping Images,尤其是Wave Distortion Operator。
     彗星狀的字體:專用模糊操作選項之一的運動模糊(-motion-blur)選項可以讓你在圖像中創建出一個拖着尾巴像彗星狀的字體。
        convert -size 340x120 xc:lightblue  -font Candice  -pointsize 72 \
                -fill navy   -annotate +45+95 'Anthony' -motion-blur 0x25+65 \
                -fill black  -annotate +45+95 'Anthony' -motion-blur 0x1+65 \
                font_comet.jpg
wordPic43.gif 
     你還可以採用不同的顏色讓這個複合字體變得栩栩如生,就像一個真正的噴火的彗星似的。
     你也可以使用專用模糊選項做更多的事情,但是IM程序中的這些選項仍然處於試驗階段,在不久的將來它們的用法可能會發生改變。
     冒煙狀的字體:與-wave選項結合使用,可以使彗星字體外觀變得像煙霧、氣味甚至上升的火焰狀的字體!
        convert -size 320x120 xc:lightblue  -font Candice  -pointsize 72 \
                -fill black  -annotate +25+95 'Anthony'  -motion-blur 0x25+90 \
                -background lightblue -rotate 60  -wave 3x35  -rotate -60 \
                -gravity center  -crop 320x120+0+0 +repage +gravity \
                -fill navy   -annotate +25+95 'Anthony'   font_smoking.jpg
wordPic44.gif 
     你是否有一個有趣的字體轉換方法可以添加到上面的列表中嗎?

wordPic9.gif (6.5 KB, 下載次數: 5)

wordPic9.gif

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章