php gd庫擴充套件生成帶中文字型的png圖片

錚亮不鏽發表於2016-10-11

注意中文字型的話,需要首先安裝字型庫才行,這裡以楷體字為例,來生成圖片

apt-get install fonts-cwtex-kai

find -name *kai*.ttf

./usr/share/fonts/truetype/cwtex/cwkai.ttf


test_gd.php檔案要求是以utf8無bom格式編碼的

<?php
class Test_gd {

	public function __construct()
	{
		if(extension_loaded('gd')) {
		    // echo '你可以使用gd<br>';
		    /*foreach(gd_info() as $cate=>$value) {
		        echo "$cate: $value<br>";
		    }*/
		}else {
		    echo '你沒有安裝gd擴充套件';
			return;
		}
	}
        /**
     * 生成一個png圖片,上面字型為楷體
     * @param  [string] $text 中文文字
     * @return [void]   
     */
	public function createPng($text)
	{		
		// Set the content-type
		 header ( 'Content-Type: image/png' );

		 // Create the image
		 $im  =  imagecreatetruecolor ( 120 ,  30 );

		 // Create some colors
		 $blue  =  imagecolorallocate ( $im ,  105 ,  158 ,  195 );
		 $grey  =  imagecolorallocate ( $im ,  128 ,  128 ,  128 );  //表示陰影效果
		 $white  =  imagecolorallocate ( $im ,  255 ,  255 ,  255 );
		 imagefilledrectangle ( $im ,  0 ,  0 ,  120 ,  29 ,  $blue );
		 
		 // Replace path by your own font path
		 //$font  =  '/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf' ;
		 $font  = '/usr/share/fonts/truetype/cwtex/cwkai.ttf';//楷體

		 $len = mb_strlen($text);
		 $posX = (imagesx($im)-20*$len) / 2 - 3*($len-1) - $len*0.5; //字間距和字留白都要去掉

		 // Add some shadow to the text
		 //imagettftext ( $im ,  20 ,  0 ,  $posX+1 ,  24 ,  $grey ,  $font ,  $text );

		 // Add the text
		 imagettftext ( $im ,  20 ,  0 ,  $posX ,  23 ,  $white ,  $font ,  $text );

		 // Using imagepng() results in clearer text compared with imagejpeg()
		 imagepng ( $im );
		 imagedestroy ( $im );
	}
      /**
     * 降低圖片質量,減小檔案體積
     * @return [void]
     */
    public function tinyImage()
    {
        $sImage = '/home/www/medicine/SPH00000972/主圖1.jpg';
        $tImage = '/home/www/data/SPH00000972_1.jpg';

        $im = imagecreatefromjpeg($sImage);
        imagejpeg($im,$tImage,50); //quality setting to 50%
        imagedestroy($im);
        echo "complete<br/>";
    }
 }

$gdTest = new Test_gd();
$text = $_GET['text'];
$gdTest->createPng($text);	
?>


最終生成的圖片效果如下:


相關文章