ImageCreateTrueColorとImageTtftextは、PHPを使用して画像の生成とテキストレンダリングを処理する場合、非常に一般的に使用される2つの関数です。特に多言語環境では、フォントの文字化けの問題に対処することは、開発における一般的な課題です。この記事では、例を組み合わせて、これらの2つの機能を正しく使用する方法を説明して、中国語または他の非英語のキャラクターが文字化けされているように表示されないようにします。
Imagettftextを使用して多言語テキストをレンダリングする際の一般的な文字化けの問題は、通常、次の理由によって引き起こされます。
フォントファイルは、ターゲット言語文字をサポートしていません。
文字列エンコーディングはフォントと一致しません(通常、UTF-8およびGBKのエンコード問題)。
エンコードは、PHPスクリプトまたは画像を処理するときに正しく処理されません。
「simhei.ttf」、「notosanscjk.ttf」など、多言語文字をサポートする.ttfフォントファイルを選択します。
入力テキストがUTF-8としてエンコードされていることを確認してください。
PHPスクリプトでは、混乱を避けるために均一にUTF-8エンコードを使用します。
ImageCreateTrueColorを使用して真の色の画像を作成して、テキストの色と背景色が正しく表示されるようにします。
次の例は、PHPでImageCreateTrueColorとImagetTftextを使用して中国を含む画像を生成する方法を示して、文字化けコードを避けます。
<?php
// コンテンツをに設定しますUTF-8コーディング
header('Content-Type: image/png; charset=utf-8');
// ワイドシートを作成します300,高い100真の色のキャンバス
$width = 300;
$height = 100;
$image = imagecreatetruecolor($width, $height);
// 背景色を設定します(白)
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
// テキストの色を設定します(黒)
$black = imagecolorallocate($image, 0, 0, 0);
// 書かれる中国のテキストを設定します,そうであることを確認してくださいUTF-8コーディング
$text = "多言語フォントテスト";
// 中国語をサポートするフォントファイルを選択します,実際のストレージの場所に従ってパスを調整する必要があります
$font = __DIR__ . '/fonts/SimHei.ttf';
// 使用 imagettftext テキストをレンダリングします,パラメーターはです:画像リソース、フォントサイズ、角度、x座標、y座標、色、フォントファイルパス、テキストコンテンツ
imagettftext($image, 20, 0, 10, 50, $black, $font, $text);
// ブラウザに写真を出力します
imagepng($image);
// 画像リソースを破壊します,無料のメモリ
imagedestroy($image);
?>
フォントファイル<br> 使用する.ttfフォントファイルが漢字をサポートしていることを確認してください。システムフォントディレクトリからコピーするか、オープンソースフォントをダウンロードできます。このパスは、絶対的または相対パスを使用し、ファイル許可に注意を払うことをお勧めします。
コーディング
PHPファイルはBOMなしでUTF-8として保存され、テキストコンテンツ$テキストもUTF-8でエンコードする必要があります。
環境構成<br> PHP環境にGDライブラリがインストールされていることを確認し、Freetypeフォント機能をサポートしています。
URLを介してフォントリソースまたは外部ファイルを参照する必要がある場合、ドメイン名は例でM66.NETに置き換えられます。たとえば