これまでのところ、GD を使用して描画の基本的なニーズを完了することができました。ただ、ImageString
は使用できるフォントが5つしかなくて見苦しいと感じることがあるので、以下の関数を使います。この機能により TTF フォントを使用できるようになりますが、これらのフォント用のファイルが必要です。
Header("Content-type: image/png");
$im = ImageCreate(400,250);
$col_back = ImageColorAllocate($im,136,200,152);
$col_write = ImageColorAllocate($im, 255,255,255);
$col_black = ImageColorAllocate($im,0,0,0);
ImageTTFText($im,160,15,40,220,$col_black,"C:/windows/fonts/verdana.ttf","PNG ");
// 新しい内容はこの文だけです。パラメータは次のとおりです:
// $im 言うまでもありません。この位置 160 がフォント サイズ (pt) です。 15 ひもは水平から反時計回りの傾斜角度です。
// 40,220 は水平方向と垂直方向の座標です。 ImageString との違いは、
//ImageString で指定された座標は文字列の左上隅であるのに対し、ImageTTFText で指定された座標は左下隅であることに注意してください。
// 次の $col_black は色です。
// "C:/windows/fonts/verdana.ttf" はフォント ファイルのパスで、Linux では "/.../....." です。
// 「http://....」でも構いません。ただし、私はこの方法で使用したことがないので、お勧めしません。
// 自分のマシン上にないものは結局信頼性が低く、重要なタスクを任せることができないからです。
//最後は出力する文字列です。これは特に注目すべき点です。
// ここの文字列は UTF-8 でエンコードする必要があります。 ! !
//ASCII コード 0~127 文字、ASCII コードは UTF-8 エンコーディングと等しいため、欧文文字列を出力するときに変換する必要はありません。
// 中国語を出力したい場合は、一連の変換が必要です。
// www.phpx.com は、悲しいことに GB2312 コードを UTF-8 コードに変換する関数を作成しました。
// 私の他の記事では、この関数の動作原理を具体的に分析しています。
ImagePNG($im);
ImageDestroy($im);
?>
ImageString 出力文字列が占める高さと幅を計算するのに役立つ ImageFontWidth() や ImageFontHeight() と同様に、ImageTTFBBox も役立ちます。 ImageTTFText 出力文字列の状況を計算します。戻り値は
8 個のメンバーの配列で、(この順序に注意してください) 左下、右下、右上、左上の水平座標と垂直座標です。試してみてください:
$p=ImageTTFBBox(160,0,"C:/windows/fonts/verdana.ttf","PNP");
for($i=0;$i echo "(".$p[$i].",".$p[$i+1].")"."
";
?>
結果は次のようになります次のように:
(15,-1)
(306,-1)
(306,-117)
(15,-117)
なぜ負の数があるのでしょうか?私にも分かりません。これらの座標は何に対する相対的なものですか?何に対して相対的であっても、両者の相対的な位置は変わりません。したがって、これらは重要ではありません。左下の点がどこにあるべきかは、左右の横座標の差と上下の縦座標の差に基づいて計算できます。
さて、TTFフォントを使って文字列を出力する話は終わりましたが、「漢字を書くのに手間がかかる」という前の問題も解決しました。私の観点から見ると、GD には既存の画像を開いて処理し、再エクスポートするという最後の部分が残っています。
まず第一に、写真の情報を取得することが基本的です。以下の例を見てください:
$im=ImageCreateFromPNG("test.png");
// これは既存の画像を開きます。
// 非常に単純です。パラメータは画像のパス、戻り値は画像 ID です。
echo "画像の幅は ".ImageSX($im)."、高さは ".ImageSY($im).".";
// ImageSX() と ImageSY は、画像の幅と高さを取得します。それぞれ画像を作成する場合、それらはすべて 1 つのパラメータ (開かれた画像の ID) のみを必要とします。
?>
また、GDライブラリに属さない画像情報を取得する関数GetImageSizeがあります。
$p=GetImageSize("test.png");
for($i=0;$i";
?>
結果は次のようになります:
50
100
3
width="50" height="100"
この関数は画像に関する情報を含む配列を返し、その 4 つの情報が返されることがわかります。要素は次のとおりです: 最初の 2 つは画像の幅と高さで、3 番目は画像の形式を表します: 1 = GIF、2 = JPG、3 = PNG、4 = SWF、5 = PSD、6 = BMP。最後です
要素は、画像の幅と高さを表すために HTML で使用される文字列です (とても便利です!)。たとえば、次のように使用できます:
....
$pic_name="....";
$pic_size=GetImageSize($pic_name);
?>>
....
もう一度繰り返しますが、この関数は GD ライブラリに属しません。インストールされていない場合は GD ライブラリは PHP 環境でも使用できます。 !
サムネイルは頻繁に必要となる機能です。サムネイルは、GD の「コピーとサイズ変更」機能を使用して簡単に実装できます。
// 任意のサイズの画像を幅 200 ピクセルに縮小 (拡大) したいとします。
// Header("Content-type: image/jpeg");
$pic_name="test.jpg";
$ims=ImageCreateFromJPEG($pic_name);
// 元の画像を開きます。
$owidth=ImageSX($ims);
$oheight=ImageSY($ims);
// 元の画像の幅と高さを取得します。
$nheight=Round($oheight*200.0/$owidth);
// 新しい画像の高さを計算します。
$imt=ImageCreate(200,$nheight);
// 新しい画像を作成します。
ImageCopyResize($imt,$ims,0,0,0,0,200,$nheight,$owidth,$oheight);
// 新しい画像にコピーしてサイズ変更します。
// この関数には多くのパラメータがあります。まず、コピー先の画像と元の画像の ID です。
// 次の 4 つのパラメータは、コピー先の画像と元の画像のコピー位置の座標です。
// 元の画像の 20,30 から宛先画像の 10,0 にコピーする場合
// これらの 4 つのパラメータは 10,0,20,30 になります。
// 次の 4 つと最後の 4 つのパラメータは、コピー先の画像と元の画像のコピー領域の幅と高さです。
// たとえば、100x50 の領域を元の画像からコピー先にコピーします画像を作成して 50x25 に縮小します
//これらの 4 つのパラメータは 50,25,100,50 です。
// ここで使用するパラメータは、元の画像を新しい画像に完全にコピーすることです (コピー位置はすべて 0,0)
// 拡大または縮小に関係なく、元のサイズを幅 200 ピクセルに調整します。
// 200,$nheight は新しい画像の幅と高さ、$owidth,$oheight は元の画像の幅と高さです。
// この関数を使用するときは、パラメータの各セットで次の点に注意してください。
// 宛先イメージに関連するパラメータが最初に来て、元のイメージに関連するパラメータが最後に来ます。
ImageJPEG ($imt);
ImageDestroy ($imt);ご清聴ありがとうございました!一緒に進歩していきましょう!

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ホットトピック









