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

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、815788 標(biāo)題包裹文字的標(biāo)簽 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815789 最佳匹配標(biāo)題 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815790 標(biāo)題與段落 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 標(biāo)簽圖像邊界 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 符號(hào)字體 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 文本文本格式頁(yè) HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815799 修剪文字頁(yè) 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 繪畫(huà)在現(xiàn)有的畫(huà)布上繪制文本 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 注釋文本繪制選項(xiàng) HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815806 自動(dòng)調(diào)整注釋文字的畫(huà)布尺寸 HYPERLINK /topic/a/tupianzhuanti/Image

9、Magick/zhongji/2012/0301/44.html l _Toc318815807 使用“底色區(qū)域(Undercolor Box)”自動(dòng)調(diào)整尺寸 HYPERLINK /topic/a/tupianzhuanti/ImageMagick/zhongji/2012/0301/44.html l _Toc318815808 對(duì)灰度文本圖像進(jìn)行著色 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)義字符選項(xiàng) 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)建文本標(biāo)簽或添加文本到圖像中,可能是使用ImageMagick進(jìn)行的最基

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

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

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

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

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

17、ty center label:Anthony label_gravity.gif當(dāng)然,如果你不使用-size選項(xiàng)設(shè)置標(biāo)簽的尺寸,那么在“l(fā)abel:”生成的標(biāo)簽中就不會(huì)有多余的空間,將導(dǎo)致使用-gravity選項(xiàng)不會(huì)有任何效果。同時(shí)使用“-size”和“-pointsize”選項(xiàng)的問(wèn)題是,文字可能會(huì)“溢出”指定圖像的區(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è)置,如果命令中同時(shí)給定了-size設(shè)置。這將導(dǎo)致上面的圖像文本根據(jù)最合適原則來(lái)自動(dòng)調(diào)整尺寸(見(jiàn)下一組示例)。最合適的文本(wnbn)圖像使用“l(fā)abel:”命令來(lái)生成指定尺寸(-size)圖像的秘訣就是不要(byo)為標(biāo)簽文字指定-pointsize選項(xiàng)。如果發(fā)生了這種情況時(shí),IM將會(huì)自由嘗試和選擇最適合圖像尺寸的字體大小。也就是說(shuō)繪制的文本將被進(jìn)行調(diào)整,以匹配給定的圖像尺寸!convert -background lightblue -fill blue -font Candice -size 165x70 label:Anthony labe

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

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

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

22、那么會(huì)自動(dòng)調(diào)整為適合繪制文本尺寸的寬度。正如你所期望的。當(dāng)然,在這種情況下并不會(huì)在圖像中產(chǎn)生額外的空間,所以設(shè)置-gravity選項(xiàng)也不會(huì)產(chǎn)生效果。多行標(biāo)簽“l(fā)abel:”命令還可以用來(lái)生成多行的文本標(biāo)簽(在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”來(lái)代表?yè)Q行符。這意味著你可能要預(yù)先處理輸入文本,以確保放置在命令行

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

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

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

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

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

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

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

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

31、相同,但是其中-size選項(xiàng)設(shè)置的尺寸對(duì)結(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)標(biāo)題IM v6.3.2版本中,如果你提供了最終圖像的寬度和高度,但沒(méi)有定義字體的pointsize(或者使用“+pointsize”命令關(guān)閉了pointsize設(shè)置),這時(shí)IM將會(huì)嘗試自動(dòng)調(diào)整字體的大小,以最好的

32、匹配你所要求的圖像尺寸(-size)。例如,在這里我要求ImageMagick去覆蓋一個(gè)面積相當(dāng)大的區(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)在我們采用一個(gè)小得多的區(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ǐng)注意,最后兩個(gè)例子之間唯一的區(qū)別就是產(chǎn)生圖像的-size選項(xiàng)設(shè)置。IM對(duì)文本和文字進(jìn)行了最佳尺寸調(diào)整,來(lái)嘗試(chngsh)和對(duì)指定的圖像尺寸進(jìn)行最好的填充匹配。它對(duì)于將未知位數(shù)的文本字符串放入一個(gè)指定的空間中非常有用,如果沒(méi)有這個(gè)功能文本將會(huì)溢出區(qū)域的邊界。但是,在內(nèi)部它就相當(dāng)于多次運(yùn)行添加標(biāo)題命令,直到IM找到匹配給定區(qū)域的最佳字體尺寸。換句話說(shuō),它往往比你如果提供(tgng)了一個(gè)指定的“-pointsize”設(shè)

34、置進(jìn)行相同的操作要慢10倍或更多。標(biāo)題與段落“caption:”圖像命令中(如IM v6.2.5版本)支持使用shell轉(zhuǎn)義符“n”(因此你需要使用雙反斜線“”表示反斜杠字符),這表示一個(gè)新的行或段落。在這個(gè)版本之前繪制分開(kāi)的段落必須單獨(dú)多次使用“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、以從一個(gè)文件或者標(biāo)志輸入(從先前的管道命令)中讀入需要繪制的文本內(nèi)容,通過(guò)使用“”作為文件名前綴,正如我們?cè)凇發(fā)abel:”命令中一樣的用法。mesgs FilePrivate |convert -background lightblue -fill blue -pointsize 12 -size 320 x caption:- caption_file.gif正如你所看到的,在輸入文本中的換行符(如IM v6.2.5版本)將被視為段落分隔符。這包括輸入文件中任何最后的換行符。當(dāng)然“l(fā)abel:”命令并不會(huì)對(duì)文字行進(jìn)行換行,而是保留(boli)它們。如果你確實(shí)需要一個(gè)文件被作為一個(gè)段落進(jìn)行處

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

37、了那些空白行中的。這里有一個(gè)特殊的“sed”命令可以將這樣的文本轉(zhuǎn)換成“caption:”所需的格式。在這種情況下,文本將是“convert”聯(lián)機(jī)幫助頁(yè)的第一頁(yè)。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文本屬性通常可以影響文本處理效果的設(shè)置包括:“-font”、“-fill”、“-pointsize”、“-size”和“-gravity”。

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

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

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

41、格式的時(shí)候。-density選項(xiàng)設(shè)置會(huì)告訴IM在輸出設(shè)備上每英寸范圍內(nèi)顯示了多少個(gè)像素點(diǎn)(PPI),它可以在接下來(lái)的操作中用來(lái)(yn li)調(diào)整生成的圖像,并與字體尺寸相匹配。例如在默認(rèn)情況下,IM的-density選項(xiàng)設(shè)置為72 ppi,這是圖像顯示在監(jiān)視器或網(wǎng)頁(yè)上時(shí)的一個(gè)典型設(shè)置。由于字體大小被指定為“點(diǎn)”(使用-pointsize選項(xiàng)),并且根據(jù)定義1點(diǎn)等于1/72英寸,所以72點(diǎn)的字體顯示出來(lái)的文字尺寸大約是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)生一個(gè)標(biāo)簽,它在90 dpi的顯示器上是1英寸高,在我的顯示器上就是這樣的!你可以通過(guò)測(cè)量屏幕上這張圖像的高度,來(lái)檢查你的顯示器分辨率。由于每英寸中像素的個(gè)數(shù)越多,所繪制的字體也自然較大(根據(jù)圖像中的像素?cái)?shù)目),從而產(chǎn)生出較大的圖像。不同的圖像處理程序往往有不同的默認(rèn)密度設(shè)置,這就可能會(huì)導(dǎo)致使用(shyng)不同圖像程序繪制的字體也不完全相同,即使它們都使用相同的point尺寸。請(qǐng)注意,-pointsize選項(xiàng)實(shí)際上表示字體的分離邊線(即是它的繪圖區(qū)

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

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

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

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

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

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

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

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

52、e字符代碼產(chǎn)生了一個(gè)UTF-8文本,并使用管道命令讀入到程序(使用“-”從標(biāo)準(zhǔn)輸入“stdin”中讀?。?,而不是從實(shí)際文件中讀入。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需要了解更多的信息,或者查找各種語(yǔ)言(yyn)和符號(hào)的Unicode字符代碼,請(qǐng)參閱Unicode字符代碼圖表 HYPERLINK /charts/ Unicode Character Code Charts?,F(xiàn)在(xinzi)你不僅可以使用Unicode字符來(lái)繪制各種國(guó)際字符,并且使用合適的字體

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

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

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

57、iscellaneous Symbols中的一個(gè)(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)說(shuō)明由Wolfgang Hugemann提供 HYPERLINK /Usage/windows/ l character_encoding Windows Character Encoding。符號(hào)字體人們更普遍使用的查詢特殊文本圖像的方法,就是使

58、用特殊的“符號(hào)字體”。它們比完整的較大的Unicode字體要小很多,因?yàn)樗鼈儍H僅將標(biāo)準(zhǔn)的ASCII字符(字母和數(shù)字)更換為一組不同的具體形狀和圖像,盡管有時(shí)(很少)它們?cè)诶≡址麉^(qū)域中有更多的符號(hào)。“dingbats”字體符號(hào)就是以這種方式開(kāi)始的,但正如上面所提到的,現(xiàn)在它們是Unicode字符集的一部分了。例如,我比較喜歡使用的一個(gè)符號(hào)就來(lái)自“WebDings”字體。它是一個(gè)相當(dāng)漂亮的“彎曲的心臟”的圖標(biāo),其實(shí)這是在那種字體定義中的正?!癥”字符的替代圖像。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字體實(shí)際上都是一個(gè)特殊類型的矢量圖像格式 HYPERLINK /U

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論