文字圖像處理資料(共50頁)_第1頁
文字圖像處理資料(共50頁)_第2頁
文字圖像處理資料(共50頁)_第3頁
文字圖像處理資料(共50頁)_第4頁
文字圖像處理資料(共50頁)_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、ImageMagick文字(wnz)圖像處理 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815783 ImageMagick的文本(wnbn)操作選項 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815784 標簽(bioqin)簡單的文本標簽 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/03

2、01/44.html l _Toc318815785 基本標簽 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815786 最合適的文本圖像 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815787 垂直標簽 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318

3、815788 標題包裹文字的標簽 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815789 最佳匹配標題 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815790 標題與段落 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815791 文本屬性 HYPE

4、RLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815792 標簽圖像邊界 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815793 Unicode或UTF8格式文本 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815794 符號字體 HYPERLINK /top

5、ic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815795 字符間距 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815796 單詞間距 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815797 行間距 HYPERLINK /topic/a/tupianzhuanti/ImageM

6、agick/zhongji/2012/0301/44.html l _Toc318815798 文本文本格式頁 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815799 修剪文字頁 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815800 Postscript / PDF預(yù)格式化文本和圖形輸入(或其它矢量圖像格式) HYPERLINK /topic/a/tupian

7、zhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815801 直接使用Ghostscript HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815802 繪畫在現(xiàn)有的畫布上繪制文本 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815803 底色區(qū)域 HYPERLINK /topic/a/tupianzhua

8、nti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815804 溢出邊界區(qū)域 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815805 注釋文本繪制選項 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815806 自動調(diào)整注釋文字的畫布尺寸 HYPERLINK /topic/a/tupianzhuanti/Image

9、Magick/zhongji/2012/0301/44.html l _Toc318815807 使用“底色區(qū)域(Undercolor Box)”自動調(diào)整尺寸 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815808 對灰度文本圖像進行著色 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815809 文本參數(shù)中的特殊轉(zhuǎn)義字符 HYPERLINK /topic/a/tu

10、pianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815810 用戶定義的轉(zhuǎn)義字符選項 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815811 確定字體尺寸,而不使用API HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815812 老版本的技術(shù) HYPERLINK /topic/a/tupianz

11、huanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815813 使用混合字體樣式創(chuàng)建一行文本 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815814 填充表格 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815815 文字處理替代方案創(chuàng)建文本標簽或添加文本到圖像中,可能是使用ImageMagick進行的最基

12、本也是最常見的操作之一。同時,它還是最簡單,但又能產(chǎn)生一些非常奇妙結(jié)果的操作。因此這是一個很好的選擇,用來開始我們對IM能力的探索。ImageMagick的文本(wnbn)操作選項ImageMagick中有很多不同的方式可以用來(yn li)在一張圖像中繪制文本,這全靠了它強大的多功能圖像處理庫。本頁的將詳細介紹各種文本繪制的具體方法和風(fēng)格。當你研究這些例子時必須要記住的是,ImageMagick主要是一個圖像(t xin)轉(zhuǎn)換器和修改器。因此每個方法中提供的都是一些簡單的文本繪制選項,如將標簽和版權(quán)信息添加到圖像中。參見 HYPERLINK /Usage/annotating/ Annota

13、ting Images。所有這些文字操作選項也支持和使用一套標準的文本處理設(shè)置,如命令里使用的“-font”和“-pointsize”設(shè)置等。同時還包括“-fill”顏色設(shè)置和更復(fù)雜文本使用的“-strokewidth”、“-stroke”和“-undercolor”等選項。實際上,當你創(chuàng)建一張新的圖像時,例如標簽和標題,那么可能還要使用“-background”顏色設(shè)置。最后還有新加入的字距調(diào)整(-kerning)和詞間的間距(-interword-spacing)選項。但是ImageMagick并不是一個很好的格式化文本或文檔處理器。如果你想進行高級的文字處理,你最好使用一個完整的交互式文

14、字處理器,或者文本批處理器,如“TeX”(或與它相同的工具,參看下面介紹的完整文字處理系統(tǒng))。這些方案的輸出(一般是PostScript格式)接下來可以被轉(zhuǎn)換成圖像,然后使用ImageMagick來進一步修改,也就是說,使用合適的工具進行合適的工作。這就是說可以完成一些混合的字體處理。詳情參考本頁最后介紹的創(chuàng)建混合字體樣式的線條?,F(xiàn)在,讓我們一起學(xué)習(xí)將文本轉(zhuǎn)換成圖像的基本途徑,接下來我們再看看如何生成一些有趣的字體效果。標簽簡單的文本標簽基本標簽通過使用“l(fā)abel:”圖像命令就可以創(chuàng)建一張字體圖像,這是ImageMagick中比較典型的快速繪制字體的方法。這種方法的最大好處是,可以根據(jù)當前的

15、-background和-fill顏色設(shè)置生成自己的畫布,用來匹配繪制文本的尺寸。例如,這里是一個典型的生成標簽的例子。convert -background lightblue -fill blue -font Candice -pointsize 72 label:Anthony label.gif在上面大概是最典型的添加標簽的方法,通過選擇字體(zt)(-font)和字號(-pointsize)來定義結(jié)果圖像。但是,這也是生成文本標簽的最沒趣的方法。使用“l(fā)abel:”命令生成標簽圖像,也會在圖像屬性設(shè)置的元數(shù)據(jù)中產(chǎn)生相同的字符串。某些文件格式,例如MIFF和PNG,將保存這些特定的信息

16、并影響或在以后的圖像處理操作中使用。如果你還指定了-size選項,那么生成的標簽圖像將被創(chuàng)建為這個(zh ge)設(shè)定的尺寸。convert -background lightblue -fill blue -font Candice -size 165x70 -pointsize 24 label:Anthony label_size.gif你還可以使用-gravity選項在更大的區(qū)域中確定(qudng)文本標簽的位置。convert -background lightblue -fill blue -font Candice -size 165x70 -pointsize 24 -gravi

17、ty center label:Anthony label_gravity.gif當然,如果你不使用-size選項設(shè)置標簽的尺寸,那么在“l(fā)abel:”生成的標簽中就不會有多余的空間,將導(dǎo)致使用-gravity選項不會有任何效果。同時使用“-size”和“-pointsize”選項的問題是,文字可能會“溢出”指定圖像的區(qū)域。convert -background lightblue -fill blue -font Candice -size 165x70 -pointsize 72 -gravity center label:Anthony label_overflow.gif在6.5.2-

18、4版本之前,IM將完全忽略-pointsize設(shè)置,如果命令中同時給定了-size設(shè)置。這將導(dǎo)致上面的圖像文本根據(jù)最合適原則來自動調(diào)整尺寸(見下一組示例)。最合適的文本(wnbn)圖像使用“l(fā)abel:”命令來生成指定尺寸(-size)圖像的秘訣就是不要(byo)為標簽文字指定-pointsize選項。如果發(fā)生了這種情況時,IM將會自由嘗試和選擇最適合圖像尺寸的字體大小。也就是說繪制的文本將被進行調(diào)整,以匹配給定的圖像尺寸!convert -background lightblue -fill blue -font Candice -size 165x70 label:Anthony labe

19、l_size_fit.gif正如你所看到的通過設(shè)置-size選項,你可以在圖像的右側(cè)或者下方(xi fn)得到一些額外的空間。當IM創(chuàng)建了一個最合適的標簽時,它所使用的實際字號(pointsize)也將保存到“l(fā)abel:pointsize”圖像屬性中,以便你以后使用這些信息。這是在IM v6.6.2-7版本中新加入的,經(jīng)過在IM論壇中對pointsize進行討論決定的。你仍然可以通過使用-gravity選項在這些額外的空間中對文本標簽的位置進行調(diào)整。convert -background lightblue -fill blue -font Candice -size 165x70 -gra

20、vity center label:Anthony label_size_gravity.gif當然,如果你不對標簽進行-size設(shè)置,那么“l(fā)abel:”命令就不會生成多余的空間用來讓-gravity選項進行位置調(diào)整,所以只有當你的圖像指定了大小尺寸時,它才會有意義?,F(xiàn)在有個最好的消息。如果-size選項設(shè)置中,你只給定了標簽的寬度或者高度,那么(n me)字體將按照給定的維度被調(diào)整到最適合的尺寸,那些未指定的其它維度,將自動進行調(diào)整,以適應(yīng)文本!convert -background lightblue -fill blue -font Candice -size 160 x label:

21、Anthony label_size_width.gif基本上,這意味著上述“l(fā)abel:”命令生成的圖像將永遠是160像素寬,并且設(shè)置為匹配這個寬度的最大字體。然后(rnhu)自動調(diào)整標簽的高度以適應(yīng)文本標簽。如果指定的是高度而不是寬度,程序也會進行(jnxng)相應(yīng)的操作。convert -background lightblue -fill blue -font Candice -size x40 label:Anthony label_size_height.gif這個標簽的高度為40像素,由于未定義文本的pointsize,因此可以自動進行調(diào)整以適應(yīng)這個高度,然后由于未定義圖像寬度,

22、那么會自動調(diào)整為適合繪制文本尺寸的寬度。正如你所期望的。當然,在這種情況下并不會在圖像中產(chǎn)生額外的空間,所以設(shè)置-gravity選項也不會產(chǎn)生效果。多行標簽“l(fā)abel:”命令還可以用來生成多行的文本標簽(在IM v6.2.5版本)。convert -background lightblue -fill blue -font Ravie -pointsize 20 label:ImageMagicknRules - OK! label_multiline.gif正如你所看到的“l(fā)abel:”命令(mng lng)中支持使用“n”來代表換行符。這意味著你可能要預(yù)先處理輸入文本,以確保放置在命令行

23、上的數(shù)據(jù)中任何可能的轉(zhuǎn)義字符都正確。詳情請參閱下面介紹的文本特殊轉(zhuǎn)義字符參數(shù)。-gravity選項同樣可以影響“l(fā)abel:”命令生成標簽(bioqin)的效果(IM v6.2.6版本),你可以用它來調(diào)整多行標簽的位置。convert -background lightblue -fill blue -font Corsiva -pointsize 24 -gravity center label:ImageMagicknExamplesnby Anthony label_centered.gifIM的另一個(y )重要特性就是,它可以從一個文件中讀取需要使用的文本數(shù)據(jù)。這可以通過給文件名添加

24、前綴字符“”,并將它作為字符串參數(shù)來實現(xiàn)。例如,下面我在這里創(chuàng)建一個標簽,從我的工作站文件中提取信息。convert -background lightblue -fill blue label:/etc/motd label_file.gif你也可以從標準輸入通道中讀取標簽的文本內(nèi)容。例如在這里,我將引用發(fā)生器的輸出轉(zhuǎn)換成多行標簽進行顯示。mesgs ImageResolution |convert -background lightblue -fill blue label:- label_file_multiline.gif請注意,其中我使用的文件名只是一個“-”字符。這就表示該文件是從

25、標準輸入讀取的。記住你可以使用“文件名”格式將任何命令行字符串參數(shù)讀入IM中。這包括下面介紹的所有其它文本輸入方法。但是它只能用于替換整個字符串參數(shù),而不是字符串參數(shù)的其中一部分。還要注意,在上面的例子中,有一個額外( wi)的空白行被添加到標簽圖像中了。這是由于輸入文本文件中最后的換行符產(chǎn)生的空白行。除非你用某種方式從輸入文件中(參見下面的“caption:”中介紹的方法來解決這個問題)刪除最后的換行符,否則“l(fā)abel:”命令永遠會從輸入的文本文件中讀入一個空行。大部分舊版本的IM(v6.2.5版本之前)并不支持處理多行標簽。在這些版本中,多行文本會被連接在一起,形成一行單一的很長的文本。

26、垂直(chuzh)標簽當然,你也可以(ky)通過在輸入文字中添加換行符來實現(xiàn)。舉例來說,在這里我選擇了一個簡單的單詞,并在每一個字母之間添加了換行符,以創(chuàng)建一個居中的垂直文本。echo -n Vertical | sed s/./&/g; s/$/ | tr 012 |convert -background lightblue -fill blue -font Ravie -pointsize 24 -gravity center label:- label_vertical.gif請注意,“sed”命令在每一個字符后都添加“”字符,除了字符串的末尾處。然后“tr”命令使用了換行符來替換所有的

27、“”字符。它還假定了輸入文本不采用換行符作為結(jié)束,這將導(dǎo)致結(jié)果圖像在底部產(chǎn)生一個額外的空白區(qū)域。用戶運行的Linux,因此使用GNU版本“sed”命令的用戶就可以刪除“tr”,直接在“sed”命令中用“n”取代“”,這樣它就直接在每個字符之間插入新行了。也可以參考特殊屬性 HYPERLINK /Usage/text/ l interline-spacing Inter-Line Spacing,用來調(diào)整字符之間的間距。標題包裹(bogu)文字的標簽通過文本輸入器生成的“caption:”圖像,在很多方面就和“l(fā)abel:”完全一樣,除了這個選項并不是(b shi)放大文本的尺寸,以適應(yīng)指定的“

28、-size”設(shè)置,而是將任何不合適的很長一行文字包裹到“-size”指定的寬度區(qū)域中。-size選項設(shè)置是不可(bk)選的,但是你至少必須使用像素作為單位來指定圖像的最大寬度。例如,這里是一行很長的文字標題,并且和指定的圖像寬度并不匹配。convert -background lightblue -fill blue -font Corsiva -pointsize 36 -size 320 x caption:This is a very long caption line. caption.gif“caption:”生成的圖像,同樣會將“caption”圖像屬性的元數(shù)據(jù)設(shè)置到相同的字符串中

29、,讓你在之后可以重新使用這些信息。所有常見的圖像文件格式都會保存這些圖像信息。默認情況下,所有文本都是左對齊的,但在IM v 6.2.0版本中,“caption:”命令也支持使用-gravity選項進行文本對齊設(shè)置。convert -background lightblue -fill blue -font Candice -pointsize 40 -size 320 x -gravity Center caption:ImageMagick Rules OK! caption_centered.gif如果你在-size選項中還提供了一個高度數(shù)值,不僅僅設(shè)置了寬度,那么圖像的高度將會設(shè)置為那

30、個值。然后,你同樣還可以使用-gravity進行設(shè)置,將文本垂直放置。convert -background lightblue -fill blue -font Gecko -pointsize 32 -size 320 x100 -gravity South caption:Captions at their height! caption_height.gif但是請注意,如果你對文本指定的pointsize并不適合放入-size設(shè)置的高度中,那么文字將從文本框中溢出(y ch)。當前的-gravity設(shè)置將會確定文字的哪一部分被切掉。例如,下面這個例子與前面(qin mian)的例子完全

31、相同,但是其中-size選項設(shè)置的尺寸對結(jié)果而言太小了。convert -background lightblue -fill blue -font Gecko -pointsize 32 -size 320 x60 -gravity South caption:Captions at their height! caption_height_toosmall.gif最佳匹配(ppi)標題IM v6.3.2版本中,如果你提供了最終圖像的寬度和高度,但沒有定義字體的pointsize(或者使用“+pointsize”命令關(guān)閉了pointsize設(shè)置),這時IM將會嘗試自動調(diào)整字體的大小,以最好的

32、匹配你所要求的圖像尺寸(-size)。例如,在這里我要求ImageMagick去覆蓋一個面積相當大的區(qū)域。convert -background lightblue -fill blue -font Candice -size 320 x140 caption:This text is resized to best fill the space given. caption_filled.gif現(xiàn)在我們采用一個小得多的區(qū)域,并且使用相同(xin tn)的字體和文本字符串。convert -background lightblue -fill blue -font Candice -size

33、80 x110 caption:This text is resized to best fill the space given. caption_filled_sm.gif請注意,最后兩個例子之間唯一的區(qū)別就是產(chǎn)生圖像的-size選項設(shè)置。IM對文本和文字進行了最佳尺寸調(diào)整,來嘗試(chngsh)和對指定的圖像尺寸進行最好的填充匹配。它對于將未知位數(shù)的文本字符串放入一個指定的空間中非常有用,如果沒有這個功能文本將會溢出區(qū)域的邊界。但是,在內(nèi)部它就相當于多次運行添加標題命令,直到IM找到匹配給定區(qū)域的最佳字體尺寸。換句話說,它往往比你如果提供(tgng)了一個指定的“-pointsize”設(shè)

34、置進行相同的操作要慢10倍或更多。標題與段落“caption:”圖像命令中(如IM v6.2.5版本)支持使用shell轉(zhuǎn)義符“n”(因此你需要使用雙反斜線“”表示反斜杠字符),這表示一個新的行或段落。在這個版本之前繪制分開的段落必須單獨多次使用“caption:”命令。convert -background lightblue -fill blue -font Ravie -pointsize 24 -size 360 x caption:Here I use caption to wordwrap.nTwo separate lines. caption_multi_line.gif你也可

35、以從一個文件或者標志輸入(從先前的管道命令)中讀入需要繪制的文本內(nèi)容,通過使用“”作為文件名前綴,正如我們在“l(fā)abel:”命令中一樣的用法。mesgs FilePrivate |convert -background lightblue -fill blue -pointsize 12 -size 320 x caption:- caption_file.gif正如你所看到的,在輸入文本中的換行符(如IM v6.2.5版本)將被視為段落分隔符。這包括輸入文件中任何最后的換行符。當然“l(fā)abel:”命令并不會對文字行進行換行,而是保留(boli)它們。如果你確實需要一個文件被作為一個段落進行處

36、理,那么你必須將換行符替換為空格字符,這樣(zhyng)你所有的文字就是一行了。例如,在這里我們采用了相同的文字內(nèi)容,但用空格替代換行符,然后將每個單詞之間的連續(xù)多個空格字符替換為一個空格。mesgs FilePrivate | tr 012 | sed s/ */ /g |convert -background lightblue -fill blue -pointsize 12 -size 320 x caption:- caption_one_line.gif正如你所看到的,這個方法(fngf)工作得更好。但是,通常你想要的是將空白行作為一個段落符來對待。這意味著你需要刪除所有換行符,除

37、了那些空白行中的。這里有一個特殊的“sed”命令可以將這樣的文本轉(zhuǎn)換成“caption:”所需的格式。在這種情況下,文本將是“convert”聯(lián)機幫助頁的第一頁。man convert | col -b | expand | sed /$/d; :loop y/n/ /; N; /n$/! b loop; s/ */ /g; s/ / |head -n 7 | convert -size 400 x caption:- caption_manual.gif文本屬性通??梢杂绊懳谋咎幚硇Ч脑O(shè)置包括:“-font”、“-fill”、“-pointsize”、“-size”和“-gravity”。

38、我們在上面的介紹中已經(jīng)詳細講解了其中許多控制屬性。但是實際上還有許多不經(jīng)常(jngchng)使用的控制屬性,并且它們通常不會影響“l(fā)abel:”和“caption:” 生成的文字圖像。比如IM v6.3.2版本中,還可以在“l(fā)abel:”或“caption:”命令中使用“-stroke”、“-strokewidth”和“-undercolor”設(shè)置(shzh)。例如在這里,我使用了很多不同的設(shè)置來控制IM文字圖像的渲染屬性。convert -background white -fill dodgerblue -font Candice -strokewidth 2 -stroke blue -

39、undercolor lightblue -size 165x70 -gravity center label:Anthony label_color.gif了解更多這些選項的細節(jié)信息,請參看下面的undercolor區(qū)域介紹,以及繪圖部分(b fen)關(guān)于-stroke和-strokewidth的介紹。現(xiàn)在,你在“l(fā)abel:”或“caption:”命令中不能使用平鋪拼接圖像定義選項,如“-tile”、“-fill”、“-background”和“-origin”,而只可以使用純色背景。如果你要嘗試這種做,最終將會產(chǎn)生一個未定義顏色(黑色)。字號、密度和實際字體尺寸像素指的顯示屏或圖像上的點

40、,這就是IM工作的單位。另一方面,圖像(t xin)將顯示為指定的分辨率(指定為點數(shù)每英寸(dpi)或像素每英寸(ppi)。由于圖像的分辨率將會影響其它方案將圖像顯示到一個指定尺寸媒體中的方法。例如:它將會影響圖像在現(xiàn)實世界中的物理尺寸。圖像的分辨率(密度或dpi)與圖像的像素尺寸、圖像所占據(jù)的內(nèi)存或磁盤空間無關(guān)。同時,在一般情況下,它也與IM大多數(shù)的圖像操作選項無關(guān)。因此,對于ImageMagick而言,分辨率只是一組存儲在圖像中的數(shù)字,并且通常被忽略。其中唯一需要使用圖像分辨率或密度的地方就是IM處理字體和將矢量格式圖像如PostScript、PDF或MWF轉(zhuǎn)換為光柵(gungshn)圖像

41、格式的時候。-density選項設(shè)置會告訴IM在輸出設(shè)備上每英寸范圍內(nèi)顯示了多少個像素點(PPI),它可以在接下來的操作中用來(yn li)調(diào)整生成的圖像,并與字體尺寸相匹配。例如在默認情況下,IM的-density選項設(shè)置為72 ppi,這是圖像顯示在監(jiān)視器或網(wǎng)頁上時的一個典型設(shè)置。由于字體大小被指定為“點”(使用-pointsize選項),并且根據(jù)定義1點等于1/72英寸,所以72點的字體顯示出來的文字尺寸大約是1英寸高。convert -pointsize 72 label:Hello pointsize.gif然而,大多數(shù)現(xiàn)代化的顯示器擁有比這更好的分辨率,通常介于90至120像素每英

42、寸(PPI)之間。convert -density 90 -pointsize 72 label:Hello density.gif上述命令應(yīng)該產(chǎn)生一個標簽,它在90 dpi的顯示器上是1英寸高,在我的顯示器上就是這樣的!你可以通過測量屏幕上這張圖像的高度,來檢查你的顯示器分辨率。由于每英寸中像素的個數(shù)越多,所繪制的字體也自然較大(根據(jù)圖像中的像素數(shù)目),從而產(chǎn)生出較大的圖像。不同的圖像處理程序往往有不同的默認密度設(shè)置,這就可能會導(dǎo)致使用(shyng)不同圖像程序繪制的字體也不完全相同,即使它們都使用相同的point尺寸。請注意,-pointsize選項實際上表示字體的分離邊線(即是它的繪圖區(qū)

43、域?qū)嶋H高度),而并非指繪制字母的實際高度!由于不同的字體在相同(xin tn)的-pointsize和密度設(shè)置時,也可能會顯示得大一些或小一些。所以實際上只有字體的分離邊線是相同的,其它任何東西都是依賴于字體類型和字體設(shè)計的。作為一個默認的-density為72dpi(其中1點=1像素)的情況中,12點的字體,兩行文字的基線(jxin)應(yīng)該相距12個像素。需要注意的是“l(fā)abel:”命令生成圖像的高度是基于圖像繪制區(qū)域或邊界框的,它通常就是字體的行間距和pointsize。但也并非總是如此,因為僅僅進行文本行的垂直連接實際上會造成不正確的字體處理!某些字體甚至可能會遠遠超出正常分離邊界的界限,

44、大量延伸到高于或低于通常字體的行間空白區(qū)域。對于手寫腳本的字體尤其如此。字體的外觀同樣也受到字體“-pointsize”和“-density”設(shè)置的影響。將字體的pointsize翻倍(“-pointsize24”),也會產(chǎn)生和將字體的密度或分辨率翻倍同樣尺寸的字體。但是由于字體是以一種特殊的方式進行設(shè)計的,因此在更大point設(shè)置下字體中的線的粗細可能并不會發(fā)生大的變化。這就是說較大的字體尺寸只會產(chǎn)生細微的不同。但是如果你對密度選項翻倍(“-density 144”),那么一個12點的字體將會繪制出原來雙倍的密度,應(yīng)該還是和原來的12點字體非常相似,只是在較大密度下可以繪制更好更平滑的邊緣效

45、果。但是,在非常低的分辨率下,像素的物理尺寸限制同樣可能影響字體的外觀。這意味著細的線條在較低的密度下可能會變粗?!癲ensity”和“pointsize”之間的關(guān)系始終是一個非常復(fù)雜的問題,只有專業(yè)的字體圖形設(shè)計師可以完全理解,讓他們能正確設(shè)計和處理字體。我認為這是一個TrueType字體渲染的特性。TrueType字形不僅是一組曲線,它可能包含多層次的細節(jié)和說明,用來根據(jù)輸出像素尺寸調(diào)整點坐標,并且對于較小像素尺寸顯示更加清晰。正因為如此,較小的文字看起來和縮小的大尺寸文本并不一樣(更加清晰,并且人們可以看出來)。未來的例子:在相同的像素尺寸下,字體的密度(density)和點(point

46、)也可能不同。基本上,增加這些因素并同時減少相同數(shù)量的其它因素可能不會產(chǎn)生相同的結(jié)果。特別是關(guān)于線條的粗細和字體的整體風(fēng)格。你最好將你所進行的工作調(diào)整到正確的配置。使用-density選項可以在輸出設(shè)備上縮放字體,或者稍后進行字體尺寸調(diào)整時,使用-pointsize選項進行正常的字體大小變化。如果你想知道更多關(guān)于(guny)字體的信息,可以看看這個文檔 HYPERLINK /typography/otspec/TTCH01.htm TrueType Fundamentals (PDF),我發(fā)現(xiàn)(fxin)它非常有趣。標簽圖像(t xin)邊界當使用一些外來的字體時,字體可以使用擴展字符,在過去

47、的IM版本中創(chuàng)建這些字體的標簽會出現(xiàn)很多的麻煩。因為這些文本會溢出我們提供的畫布。例如這里在“LokiCola”中的兩個大寫字母讓人聯(lián)想到某著名的飲料品牌。convert -background lightblue -fill blue -font LokiCola -pointsize 64 label:HC label_overflow_font.gif正如你所看到的,IM成功地將這個字體包含到標簽中,而沒有切割字體的前面或尾部圖形。在IM v6.3.2版本之前,在上面的例子中“l(fā)abel:”命令會切割掉“H”字母的前面的部分和兩個字母的尾部。這個問題存在的原因是,因為字體的字形或字母的描

48、述將會繪制指定字母定義邊界以外的部分,允許它們重疊(通常是高于或低于)在其它字符的字體上面。這實際上是字體本身設(shè)計和定義方式的問題,并不是IM造成的錯誤,盡管IM現(xiàn)在可以根據(jù)用戶的最佳利益來處理這些奇怪的情況。但是在其它情況下這仍然是一個問題,由于多行文本的相互作用,它并不能被根本解決。更多相關(guān)信息,請參閱下面的溢出邊界的例子,以得到更加精確的描述。Unicode或UTF8格式文本這種向IM提供字符串參數(shù)的方法是非常重要的,因為它允許你進行使用命令行通常很難完成的事情??梢詫iT處理“Unicode文本”,或使用字符代碼來選擇指定的字符?,F(xiàn)在,如果你需要在命令或腳本中鍵入Unicode字符,你可

49、以直接使用它們。convert -background lightblue -fill blue -pointsize 32 label: “ ” x label_i8n.gif然而,只有少數(shù)人有合適的鍵盤或編輯器可以正確實現(xiàn)Unicode字符的輸入編輯。即使你不能直接鍵入Unicode字符,一個簡單的解決方案就是從一些現(xiàn)有的UTF-8文本文件或網(wǎng)頁中將所需的字符進行復(fù)制粘貼操作(cozu)。就像我這樣!如果已經(jīng)生成了用于繪制的UTF-8文本(wnbn),你可以使用“文件名”的方法從文件中直接讀取。例如,我在這里使用UTF-8編碼的中文文本文件創(chuàng)建了一個中文標簽(在文件的最后沒有換行符)。co

50、nvert -background lightblue -fill blue -pointsize 48 -font ZenKaiUni label:chinese_words.utf8 label_utf8.gif在上面例子中使用的是一種特殊的字體,完全支持所有中文字形的定義,如Fedora Linux系統(tǒng)中的“SimSun”字體(或在字體文件“gkai00mp.ttf”中)、“ZenKaiUni”字體(文件“ukai.ttf”中)或“ShanHeiSunUni”字體(在任何的“uming.ttf”或“zysong.ttf”或“bsmi00lp.ttf”文件中)。請注意,Windows系統(tǒng)中

51、的字體“Mincho”(在后面的例子中)同樣也定義了許多的中文字形,但不是很完全。如果你在上面的例子中使用它,可能會得到一些不確定的問號字形。可以使用特殊的腳本“imagick_type_gen”來查找并提取字體的專有名稱,并將這種字體添加到ImageMagick的“type.xml”配置文件中。我們還可以從Unicode字符代碼來生成UTF-8字符串,使用GNU中的“printf”程序(Linux系統(tǒng)中)將Unicode字符代碼轉(zhuǎn)換為具體的UTF-8編碼字符串,在這種情況下,需要使用前引號和后引號進行適當?shù)呐虐妫ㄍ瑯釉赨TF-8輸入(shr)中沒有最后的換行符)。例如,這里我使用Unicod

52、e字符代碼產(chǎn)生了一個UTF-8文本,并使用管道命令讀入到程序(使用“-”從標準輸入“stdin”中讀取),而不是從實際文件中讀入。env LC_CTYPE=en_AU.utf8 printf u2018singleu2019 - u201Cdoubleu201D | convert -background lightblue -fill blue -pointsize 36 label:- label_quotes.gif在其它系統(tǒng)中(如Mac OSX和Windows),你可以使用Perl的“printf”方法從Unicode字符代碼中輸出(shch)UTF-8編碼的字符串。perl -e b

53、inmode(STDOUT, :utf8); print x201CUnicode x2018x263Ax2019 Pleasex201D; |convert -background lightblue -fill blue -pointsize 36 label:- label_unifun.gif需要了解更多的信息,或者查找各種語言(yyn)和符號的Unicode字符代碼,請參閱Unicode字符代碼圖表 HYPERLINK /charts/ Unicode Character Code Charts。現(xiàn)在(xinzi)你不僅可以使用Unicode字符來繪制各種國際字符,并且使用合適的字體

54、,你還可以使用里面定義的特殊“符號”圖形。其中最有名的就是“dingbats”符號字體。這種字體已經(jīng)被非常廣泛的使用,并且現(xiàn)在被收錄為標準Unicode字體集的一部分。例如,我在這里使用一個自己編寫的特殊“ HYPERLINK /Usage/scripts/graphics_utf graphics_utf”shell腳本,提取了“dingbats”Unicode符號區(qū)域中的前24個字符,來生成一個Unicode字符的UTF-8文本塊。graphics_utf -N 2701 2718 |convert -font Mincho -pointsize 32 label:- label_ding

55、bats.gif上面顯示的問號對應(yīng)的字符表示它們沒有在任何Unicode或windows中的“Mincho”字體中進行過定義。更特別的是,現(xiàn)在在Unicode中呈現(xiàn)出的原始“dingbats”符號中的一部分,使用的是另一種Unicode字符編碼,而不是預(yù)期的“dingbats”編碼。參見dingbats Unicode的規(guī)格表 HYPERLINK /charts/PDF/U2700.pdf Dingbats Unicode Specification Chart獲得更詳細的信息,查找現(xiàn)在替代那些丟失的“dingbats”字符的正確Unicode字符。除了問號,還有許多字體也會給這些未定義的字符

56、,僅僅打印一個字符框或空白區(qū)域。如果在結(jié)果圖像中你發(fā)現(xiàn)太多這樣的字符,或在你的輸出中缺少了字符,你應(yīng)該考慮使用不同的字體。作為大量的Unicode字符字體中的一部分還可以選用其它很多符號設(shè)置包括:Tolkan文字符號、數(shù)學(xué)符號、羅馬數(shù)字、箭頭和技術(shù)符號等。這是一個需要探索的非常大的集合,我們的“ HYPERLINK /Usage/scripts/graphics_utf graphics_utf”shell腳本可以幫助你發(fā)掘它們。這里是微軟“Mincho”字體可以渲染的Unicode字符的另一個例子(l zi)。在雜項符號章節(jié) HYPERLINK /charts/PDF/U2600.pdf M

57、iscellaneous Symbols中的一個(y )例子。graphics_utf -N 2620 2630 |convert -font Mincho -pointsize 40 label:- label_misc.gif在DOS腳本中使用Unicode字符必須比UNIX和Linux下更困難。在這種系統(tǒng)環(huán)境中使用Unicode的特別(tbi)說明由Wolfgang Hugemann提供 HYPERLINK /Usage/windows/ l character_encoding Windows Character Encoding。符號字體人們更普遍使用的查詢特殊文本圖像的方法,就是使

58、用特殊的“符號字體”。它們比完整的較大的Unicode字體要小很多,因為它們僅僅將標準的ASCII字符(字母和數(shù)字)更換為一組不同的具體形狀和圖像,盡管有時(很少)它們在拉丁元字符區(qū)域中有更多的符號。“dingbats”字體符號就是以這種方式開始的,但正如上面所提到的,現(xiàn)在它們是Unicode字符集的一部分了。例如,我比較喜歡使用的一個符號就來自“WebDings”字體。它是一個相當漂亮的“彎曲的心臟”的圖標,其實這是在那種字體定義中的正?!癥”字符的替代圖像。convert -size 20 x20 -gravity center -font WebDings label:Y label_h

59、eart_20.gifconvert -size 40 x40 -gravity center -font WebDings label:Y label_heart_40.gifconvert -size 60 x60 -gravity center -font WebDings label:Y label_heart_60.gifconvert -size 80 x80 -gravity center -font WebDings label:Y label_heart_80.gif需要記住的最重要的是,所有的TrueType字體實際上都是一個特殊類型的矢量圖像格式 HYPERLINK /U

60、sage/formats/ l vector Vector Image Format。字體中包含有多張圖像(每個字符都是一張)。因為它們是矢量圖像,這就意味著字體應(yīng)該允許你繪制(-draw)幾乎所有尺寸(規(guī)模)的任何一個字符、形狀或符號,使用“-size”、“-pointsize”和“-density”選項進行控制。正如你在上面可以看到的,“彎曲的心臟”圖像可以呈現(xiàn)在幾乎(jh)任何我需要的尺寸中。有些字體是非常(fichng)專業(yè)的。例如,你可以從 HYPERLINK /fonts/free/ IDAutomation中獲得(hud)一個被稱為“IDAutomationHC39M.ttf”的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論