解決phpimagestring中文亂碼的方法-創(chuàng)新互聯(lián)

這篇文章主要介紹了解決php imagestring中文亂碼的方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比懷仁網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式懷仁網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋懷仁地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。

php imagestring中文亂碼是因?yàn)镚D2庫本身沒有中文字體導(dǎo)致的,其解決辦法就是要指定字體來顯示所輸出的字符串即可。

imagestring函數(shù)顯示中文亂碼

1.問題描述

在學(xué)到給圖片打水印時(shí),使用了PHP內(nèi)置的GD擴(kuò)展函數(shù)庫,視頻教程用的imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )函數(shù),在實(shí)際應(yīng)用中發(fā)現(xiàn)該函數(shù)無法正常顯示中文水印,顯示中文亂碼。

2.解決過程

通過查詢官網(wǎng)PHP手冊(cè),imagestring:水平地畫一行字符串,imagestring() 用col 顏色將字符串s 畫到image 所代表的圖像的 x,y 坐標(biāo)處(這是字符串左上角坐標(biāo),整幅圖像的左上角為 0,0)。如果font 是 1,2,3,4 或 5,則使用內(nèi)置字體。

該函數(shù)的第二個(gè)參數(shù)$font是字體參數(shù),但官方只說明了該值設(shè)置為1-5的話使用內(nèi)置字體,而通過測(cè)試發(fā)現(xiàn)所謂的1-5內(nèi)置字體都不能正常顯示中文。而且官方文檔并沒有說明能否使用1-5之外的其他值和其他字體文件,測(cè)試發(fā)現(xiàn)當(dāng)把該參數(shù)設(shè)定為其他字體文件時(shí)無法正常使用。

網(wǎng)上查詢相關(guān)內(nèi)容,發(fā)現(xiàn)大多數(shù)情況,不能顯示中文都是因?yàn)镚D2庫本身沒有中文字體引起的,所以要指定字體來顯示所輸出的字符串。如果要在圖片上輸出中文,應(yīng)該使用imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )函數(shù)。該函數(shù)的官方說明為:用 TrueType 字體向圖像寫入文本

該函數(shù)的第二個(gè)參數(shù)也為字體文件,應(yīng)該指向一個(gè)ttf格式的字體文件,通過測(cè)試發(fā)現(xiàn)可以正常顯示中文。$font 為該字體文件路徑,當(dāng)字體件放在該php文件同級(jí)目錄下時(shí)即為字體文件名。

另外在PHP手冊(cè)中發(fā)現(xiàn)還有一個(gè)imagefttext (resource$image , float$size ,float$angle ,int$x ,int$y ,int$color ,string$fontfile ,string$text [,array$extrainfo ] )t函數(shù),

該函數(shù)的官方說明為:使用 FreeType 2 字體將文本寫入圖像,十分類似與上面的imagettftext函數(shù)。只是引用的字體文件類型不同,所以maybe用這個(gè)函數(shù)也可以顯示中文。不過懶得去試了。。。感興趣的可以試試。

偶然發(fā)現(xiàn)在Ubuntu系統(tǒng)下,將用到的字體文件放在該php同級(jí)目錄下,$font 為該文件名字時(shí)發(fā)現(xiàn)該函數(shù)無法正常生效,通過查詢錯(cuò)誤日志發(fā)現(xiàn)imagettftext(): Could not find/open font,通過百度查詢了解到,在Linux系統(tǒng)中,僅將$font設(shè)為文件名是不行的,還要明確路徑,如'./xxx.ttf'(相對(duì)路徑)或'/usr/share/fonts/xxx.ttf'(絕對(duì)路徑)。測(cè)試發(fā)現(xiàn)可以正常顯示。

imagestring幾乎無法正常顯示中文,也許有其他方法吧。不過推薦使用imagettftext,簡單方便,只需引入一個(gè)字體文件即可。

imagettftext函數(shù)的$font參數(shù)在window系統(tǒng)中只需設(shè)置為文件名即會(huì)在當(dāng)前目錄下去尋找該字體文件,但在linux系統(tǒng)中還要指明路徑即 ./ 。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享解決php imagestring中文亂碼的方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!

分享標(biāo)題:解決phpimagestring中文亂碼的方法-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://muchs.cn/article0/coejio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、響應(yīng)式網(wǎng)站、做網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站維護(hù)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司