2015-07-10 140 views
1

我正在使用PowerShell腳本將Unicode字符批量轉換爲PNG文件。見http://pastebin.com/aGJzk4Hh使用ImageMagick轉換特殊字符

我能弄清楚要轉換"字符必須使用指定標籤:\"

其他特殊字符並非如此簡單。

C:\ImageMagick\convert.exe -background transparent -fill hsb(0,0,0) \ 
    -font Arial -pointsize 18 -size 18x26 -gravity center label:"@" \ 
    C:\Users\erics_000\Desktop\Output\Chars\40.png 

convert.exe: UnableToAccessPath @ error/property.c/InterpretImageProperties/3330. 
convert.exe: NoImagesDefined `C:\Users\erics_000\Desktop\Output\Chars\40.png' @ error/convert.c/ConvertImageCommand/3230. 

還有:

C:\ImageMagick\convert.exe -background transparent -fill hsb(0,0,0) \ 
    -font Arial -pointsize 18 -size 18x26 -gravity center label:"\" \ 
    C:\Users\erics_000\Desktop\Output\Chars\5C.png 

convert.exe: NoImagesDefined `label:" C:\Users\erics_000\Desktop\Output\Chars\5C.png' @ error/convert.c/ConvertImageCommand/3230. 

已經很成問題對我來說。

我已經想盡辦法,我知道如何通過的但是沒有\但已被證明的工作方式來逃避這些字符。我需要能夠轉換所有Unicode字符,包括\@

是它知道如何這些可以被轉換成PNG文件與ImageMagick的?

+0

您應該更換'標籤開始:用'標籤 「\」': 「\」'(注意添加空格)。也可以用'label:「@」'替換'label:「@」' –

+0

是的,這是行得通的。我認爲對於我的腳本來說,最好的解決方案是使用@來指定一個帶有單個Unicode字符的文件。我剛剛發現@表示我發佈到ImageMagick開發人員論壇時的含義。我在下面的回覆中發表了另一條評論。但是,您的解決方案可以正常工作,但它會導致更廣泛的圖像,並且可能不是我想要發生的情況,因爲我打算在OpenGL ES中使用紋理映射文本的輸出。感謝您發佈它是不勝感激。 – Giuseppe

回答

3

第一個問題:您是否檢查過您的Arial版本是否包含Unicode字符的字形?

好的,如果它也是關於\@的字符,那麼應該不會造成問題。這導致我...

第二個問題:你安裝了哪個版本的ImageMagick?你能報告convert -version的結果嗎?

這裏是結果與ImageMagick的v6.9.0-0在Mac OS X 10.9小牛系統上:(!注意空白開始和結束我的字符串)

convert -background black -fill red -pointsize 96 label:' @ \\ @ \\ @ ' sample.png 

sample using '@' and <code>\</code>

和:

convert -background transparent -fill hsb\(0,0,0\) -font Arial \ 
     -pointsize 180 -size 190x210 -gravity center label:' @ ' \ 
     -frame 1 \ 
     sample2.png 

enter image description here

如果您需要從包含Unicode字符代碼的輸入中發出真正的Unicode字形,可以在Perl的幫助下完成此操作。我想,PowerShell還具有這樣的方法,但我不熟悉):

perl -e 'binmode(STDOUT, ":utf8"); \ 
     print " Smiley: \x{263A} "' \ 
    | convert -background black \ 
       -fill red   \ 
       -pointsize 98  \ 
       -font Menlo   \ 
       label:@-   \ 
       smiley.png 

(注:@-語法只是告訴轉換爲讀取從標準輸入標籤輸入字符串... )

smiley.png

+0

我喜歡你的答案,我投了票。我認爲在我的情況下,答案可能是將字符轉換爲文件並使用參數標籤:@ mychartoconver.txt。我還沒有嘗試過,但ImageMagick論壇的開發人員正在說這些。在你的例子中,你正在轉換多個字符的字符串,我正在轉換一個字符。他們告訴我@在標籤的情況下:參數是指定一個文件,不能用於指定@ unicode字符。 – Giuseppe

+0

如果重心真正將整個絃線居中,並將多餘部分剪切到指定的圖像大小,那麼你的方式非常好,我應該接受你的方式作爲答案,但也有一個替代方案,我剛剛發現我談到了關於我的其他評論。 – Giuseppe

+0

我認爲正確的做法是鏈接到此:http://www.imagemagick.org/discourse-server/viewtopic.php?f = 2&t = 28021&view = unread&sid = 8a8dfa72940017c4562bc69bb5286b42#未讀並標記答案 – Giuseppe