2011-08-16 31 views
3

我正在使用ImageMagick爲我們的系統中的產品生成一些產品徽章。產品徽章就像SO flair,只是幾張合成圖像和一些文字。腳本沒有問題,因爲它在運行Windows的開發機器上運行良好。但是,在我的生產系統(CentOS 5.1)上,它呈現除文本之外的所有內容。Imagemagick不顯示文字,但不會輸出錯誤

我認爲這是一個字體的問題,但即使我的字體文件複製到PHP文件位置不工作也沒有,當我給它一個完整的路徑它的工作。

當我安裝了Windows字體的Linux作爲described here沒有奏效。

我已經輸入convert -list font,它顯示的字體列表Imagick知道(如下圖所示parital列表)

Font: Times-BoldItalic 
    family: Times 
    style: Italic 
    stretch: Normal 
    weight: 700 
    glyphs: /usr/share/fonts/default/Type1/n021024l.pfb 
    Font: Times-Italic 
    family: Times 
    style: Italic 
    stretch: Normal 
    weight: 400 
    glyphs: /usr/share/fonts/default/Type1/n021023l.pfb 
    Font: Times-Roman 
    family: Times 
    style: Normal 
    stretch: Normal 
    weight: 400 
    glyphs: /usr/share/fonts/default/Type1/n021003l.pfb 

我想給這裏列出的絕對路徑,並沒有奏效。我也嘗試過使用這個名字,而且什麼都沒有。

基本上圖像顯示出來,但它的文本部分都不會顯示出來,並不會引發任何錯誤(見下圖)。

沒有什麼錯的代碼和Windows和CentOS都在運行Imagick(6.7.1-4和6.7.1-3)的近版本。唯一的問題可能是字體,我只是把正常的TTF字體和測試,我需要某種特殊的字體,以使其工作?

工作

Working Image

打破

Broken Image

編輯 - 忽略的QR碼和收視率的差異。這是由於工作徽章和非工作徽章位於兩臺不同的服務器上。

UPDATE 1 - 我運行了一個簡單的測試腳本,甚至不起作用。這就是我作爲測試跑過的:http://us2.php.net/manual/en/function.imagick-annotateimage.php字體只是不顯示,沒有錯誤拋出。

我也從CentOS系統複製的字體,並嘗試了在Windows中,它工作正常。字體在CentOS上似乎不起作用。

我也試過不設置字體,我認爲Imagick拿起默認字體什麼的,再適用於Windows,但不能在CentOS。我要在不同的* nix版本上試試這個,看看會發生什麼。將更新與調查結果。

更新3:我已經將問題縮小到了我認爲FreeType庫的問題。論壇表示需要安裝FreeType才能正確顯示文本。當我看着config.log時,它告訴我安裝FreeType時有一個問題。任何正面的這將不勝感激,同時我要重新安裝Freetype並再次運行安裝。

+0

是它顯著在所有這三個最左側的星星在填寫**工作**圖像,並且它們在** Broke **圖像中都是空的? –

+0

並且條形碼也不同)但是關於主題:你是否嘗試過一些簡單的(非常基本的)腳本來檢查字體是否在imagemagic中工作(很難調試很多代碼)?如果你這樣做 - 請在這裏發佈,我想你會得到更多的幫助。 – XzKto

+0

抱歉圖像差異的傢伙。工作的是來自本地數據的本地開發人員,非工作人員來自登臺服務器,因此數據存在差異。我將設置一個更簡單的測試腳本並將其發佈到此處。但是我的命令行測試不成功。也會發布這些。 – JohnP

回答

1

你不能只安裝Freetype。實際上,您必須在服務器上安裝Freetype,然後使用--with-freetype-dir =/usr/local選項重新編譯ImageMagick。/usr/local是您的Freetype安裝路徑。

我認爲這是正常的/ usr/local/bin目錄

給一個漩渦,讓我們知道會發生什麼;)

+0

是的,但問題是,freetype已經安裝,但它在--with-freetype = on選項上失敗。我想我可能需要定義它的安裝位置。我會嘗試指定目錄,如你所說,也許這將有所幫助。謝謝! – JohnP

+0

我再次檢查並且應該使用該命令:--with-freetype-dir =/path/to/freetype – Brian

+0

對不起,我花了那麼長時間纔回來,我只注意到腳本現在可以工作!我們的系統管理員經歷了幾個安裝,清除和重新編譯的循環。無論如何,起來和工作。謝謝! – JohnP