PHP の 10 の高度なテクニック (パート 2)
Jun 21, 2016 am 09:13 AM上級|ヒント
6. 動的な画像の作成
サードパーティのライブラリ ファイルをインストールし、一定の幾何学的知識がある限り、PHP を使用して画像を作成および処理できます。実際、私は大学を卒業していないので、まだ PHP を使用して画像を作成できるため、これには幾何学の知識はあまり必要ありません。
基本的な画像作成機能を使用する前に、GDライブラリファイルをインストールする必要があります。 JPEG 関連の画像作成機能を使用する場合は、jpeg-6b をインストールする必要があります。画像内で Type 1 フォントを使用する場合は、t1lib をインストールする必要があります。
画像作成環境を確立する前に、いくつかの準備を行う必要があります。まず、t1lib をインストールし、次に jpeg-6b をインストールし、次に GD ライブラリ ファイルをインストールします。 GD をライブラリとしてコンパイルする際に jpeg-6b が使用されるため、インストールする際はここで指定した順序でインストールする必要があります。jpeg-6b がインストールされていないとコンパイル時にエラーが発生します。
これら 3 つのコンポーネントをインストールした後も、PHP を再構成する必要があります。これが、PHP のインストールに DSO を使用する理由の 1 つです。 make clean を実行し、次の内容を現在の構成に追加します:
--with-gd=[/path/to/gd]
--with-jpeg-dir=[/path/to/jpeg-6b]
--with-t1lib=[/path/to/t1lib]
追加完了後、makeコマンドを実行し、続いてmake installコマンドを実行します。 Apache を再起動した後、phpinfo() を実行して、新しい設定が有効になっているかどうかを確認します。これで、イメージの作成作業を開始できます。
インストールされている GD ライブラリ ファイルのバージョンに応じて、GIF または PNG 形式のグラフィック ファイルを作成できる場合とできない場合があります。 gd-1.6 以前のバージョンがインストールされている場合、GIF 形式のファイルは使用できますが、PNG は作成できません。 gd-1.6 以降のバージョンをインストールすると、PNG ファイルは作成できますが、GIF 形式のファイルは作成できません。
簡単な画像を作成するには多くの機能を使用する必要もありますが、順を追って説明します。
この例では、PNG 形式で画像ファイルを作成します。次のコードは、作成された画像の MIME タイプを含むヘッダーです。
ImageCreate() を使用して空白の画像を表す変数を作成します。この関数にはピクセル単位の画像サイズのパラメーターが必要で、その形式は ImageCreate(x_size, y_size) です。サイズ 250X250 の画像を作成したい場合は、次のステートメントを使用できます:
$newImg = ImageCreate(250,250);
画像はまだ空白なので、何らかの色で塗りつぶすことができます。ただし、最初に ImageColorAllocate() 関数を使用して RGB 値を使用してこの色に名前を割り当てる必要があります。この関数の形式は ImageColorAllocate([image], [red], [green], [blue]) です。空色を定義したい場合は、次のステートメントを使用できます:
$skyblue = ImageColorAllocate($newImg,136,193,255);
次に、ImageFill() 関数を使用して画像をこの色で塗りつぶす必要があります。 ImageFill() 関数には、ImageFillRectangle()、ImageFillPolygon() など、いくつかの関数バージョンがあります。簡単にするために、次の形式で ImageFill() 関数を使用します:
ImageFill([image], [start x point], [start y point], [color])
ImageFill($newImg,0,0,$ skyblue);
最後に、画像作成後に占有されていた画像ハンドルとメモリを解放します:
ImagePNG($newImg) ?> このようにして、画像は以下の通りです:
<? header ("Content-type: image/png");
$newImg = ImageCreate($newImg,136,193,255);
ImageFill($newImg, 0,0,$ skyblue);
ImagePNG($newImg);
?> このスクリプトファイルをskyblue.phpとして保存すると、空が表示されます。青 250X250 PNG 形式の画像。
画像作成機能を使用して、大きな画像を小さな画像にするなど、画像を処理することもできます。
画像があり、そこから 35X35 の画像を切り抜きたいとします。必要なのは、35x35 の空の画像を作成し、元の画像を含む画像ストリームを作成して、サイズ変更した元の画像を新しい空の画像に配置することだけです。
このタスクを完了するための重要な関数は ImageCopyResize() で、次の形式が必要です:
ImageCopyResize([新しい画像ハンドル],
[元の画像ハンドル],
[新しい画像 X],
[新しい画像 Y],
[元の画像 X]、
[元の画像 Y]、
[新しい画像 X]、[新しい画像 Y]、
[元の画像 /* ヘッダーを送信して、ファイルに含まれるコンテンツ タイプをブラウザに知らせます */
header("Content-type: image/png");
/* 新しい画像の高さと幅を格納する変数を作成します*/
$newWidth = 35; $newHeight = 35;/* 指定された高さと幅で新しい空白の画像を作成します*/
$newImg = ImageCreate($newWidth,$newHeight)
/* 元の大きい画像からデータを取得します*/
$origImg = ImageCreateFromPNG("test .png") );
/*サイズ変更された画像をコピーし、ImageSX() と ImageSY() を使用して X と Y の元の画像のサイズを取得します*/
ImageCopyResize($newImg,$origImg,0,0, 0,0,$ newWidth,$newHeight,ImageSX($origImg),ImageSY($origImg));
/*目的の画像を作成し、メモリを解放します*/
ImagePNG($newImg) ?>この小さなスクリプトを resize.php として保存し、ブラウザでアクセスすると、35X35 の PNG 形式のグラフィックが表示されます。
7. PHP ベースのユーザー認証
各スクリプトにパスワード保護を実装したい場合は、header() ステートメント、$PHP_AUTH_USER および $PHP_AUTH_PW を使用して、一般的なサーバーベースの認証スキームを確立できます。応答シーケンスは次のとおりです:
1. ユーザーがサーバーにファイルを要求します。ファイルがサーバー上で保護されている場合、応答ヘッダーで 401 (許可されたユーザーを示す) 文字列がユーザーに返されます。
2. ブラウザがこの応答を受信すると、ユーザー名/パスワードの入力を求めるダイアログ ボックスが表示されます。
3. ユーザーはダイアログボックスにユーザー名とパスワードを入力し、「OK」ボタンをクリックすると、認証のためにサーバーに情報が返されます。
4. ユーザー名とパスワードが有効な場合、ユーザーがファイルを使用している限り、保護されたファイルは有効なままになります。
単純な PHP スクリプト ファイルは、ユーザー名/パスワード ダイアログ ボックスを自動的に表示させる適切な HTTP ヘッダーをユーザーに送信することで、HTTP 質問/応答システムを模倣できます。入力された情報は $PHP_AUTH_USER と $PHP_AUTH_PW に保存され、これら 2 つの変数を使用して、テキスト ファイルやデータベースなどに保存されているユーザー名/パスワードと比較できます。
この例では、認証に 2 つのハードコーディングされた値を使用していますが、ユーザー名とパスワードがどこに配置されても原理は同じです。
<?
/* $PHP_AUTH_USER と $PHP_AUTH_PW の値を確認します */
if ((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW)) {
/*値がない場合は、ダイアログ ボックスをトリガーするヘッダーを送信します*/
header('WWW-Authenticate: Basic realm="My Private Stuff"');
header('HTTP/1.0 401 Unauthorized'); .' ;
exit;
} else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW)){
/* 変数に値があるので、それらが正しいかどうかを確認します*/
if ( ($PHP_AUTH_USER != "validname ") || ($PHP_AUTH_PW != "goodpassword")) {
/* 入力されたユーザー名とパスワードのいずれかが間違っている場合は、ダイアログ ボックスが表示されるヘッダーを送信します*/
header('WWW-Authenticate : Basic realm="My Private Stuff"');
header('HTTP/1.0 401 Unauthorized');
exit
if (($PHP_AUTH_USER = = "validname") | ($PHP_AUTH_PW == "goodpassword")) {
/* 両方の値が正しい場合、成功メッセージを表示します */
echo "<P>許可されています!</p> ;";
}
}
?>
ファイルベースの保護メカニズムを使用している場合、ディレクトリ内のすべてのファイルのセキュリティが保証されるわけではないことに注意してください。ほとんどのファイルを保護できる可能性がありますが、特定のディレクトリ内のすべてのファイルを保護できると考えている場合は、考え方を変える必要があります。
8. PHP と COM
冒険心があり、Windows 上で CGI、ISAPI、または Apache モジュール バージョンの PHP を実行している場合は、COM 機能にアクセスできます。さて、COM の詳細な説明は Microsoft や多くの分厚い書籍に委ねられています。COM の機能を簡単に理解するために、ここでは簡単な一般的なスクリプトを紹介します。
この PHP スクリプトは、バックエンドで Microsoft ワードプロセッサ Word を起動し、新しい文書を開いてテキストを入力し、文書を保存して Word を閉じます。
<?
// 新しいCOMコンポーネントへのインデックスを作成します
$word = new COM("word.application") or die("Can't start Word!")
// 現在使用中のWordを表示しますバージョン番号
Echo "Loading Word, v. {$word->Version}<br>"; // フロントエンドで開くようにするには、その可視性を 0 (false) に設定します。 (true)
// アプリケーションを最前面で開くには 1 (true)
$word->Visible = 0; // Word で新しいドキュメントを作成します
$word->Documents-> );
// 新しいドキュメントにテキストを追加します
$word->Selection->TypeText("Testing 1-2-3...");//ドキュメントを Windows の一時ディレクトリに保存します
$word->Documents[1]->SaveAs("/Windows/temp/comtest.doc")
//COM コンポーネントとの接続を閉じます
$ word ->Quit();
// 画面に他の情報を表示します
?> イントラネット Web サイトがあり、データが SQL Server に保存されている場合、ユーザーはこれらのデータが Excel 形式であるため、PHP は必要な SQL クエリを実行して出力をフォーマットし、COM を使用して Excel を開き、データを Excel 形式のデータに変換して、ユーザーのデスクトップに保存できます。
9. PHP と Java
PHP のもう 1 つの興味深い機能は、既存の Java オブジェクトのメソッドを呼び出すことができ、PHP を Java ベースのアプリケーションに統合できることです。この機能は、職場で PHP アプリケーションを推進したい場合に非常に役立ちます。得られる結果は、「ここにあるものはすべて Java に基づいています。」です。この機能を利用するには、サーバーに JVM がインストールされている必要があります (Java Virtual)。機械)。 Sun、Kaffe、IBM、または Blackdown から JDK をインストールする場合、JVM はすでにインストールされています。
PHP を設定するときは、設定ファイルに with-java セクションを追加し、php.ini ファイルの一部を変更する必要があります。php.ini ファイルの変更には、主に次の内容を追加する必要があります。 ]
java .library.path=/path/to/library
java.class.path=/classpath/
extension_dir=/path/to/extensions
extension=libphp_java.so
変更は関連していることに注意してくださいタイプに応じて、PHP インストール ディレクトリの ext/java ディレクトリにある README ファイルを読んで、Java 関数の設定方法を学ぶ必要があります。
以下は、新しい Java オブジェクトを作成する方法に関する PHP スクリプトの例です。このスクリプトは、いくつかの Java プロパティにアクセスしてモニターに表示します。これは COM の例と同様に興味深いものであり、インスピレーションを与えてくれるはずです。
<?
$system = new Java("java.lang.System");
echo "<P>getProperty("java.version") "<br> ;";
echo "Java Vendor = " . $system->getProperty("java.vendor") . "</p>";
?>
Java の知識がある場合は、開発作業 この統合機能は、将来的に PHP が受け入れられ、成長するための鍵となります。
10. PHP と XML
PHP には、Expat 解析をサポートするオプションの XML 拡張機能が含まれており、PHP の XML 関連関数を使用して、有効な XML ドキュメントを処理する分析プログラムを作成できます。 Apache ソフトウェア バージョン 1.3.7 以降を使用している場合は、追加のライブラリ ファイルをインストールする必要はありません。必要なのは、PHP で with-xml を設定することだけです。
Java や COM と同様に、PHP での XML のサポートも興味深いものであり、急速に成長しています。Expat または LibXML をご存知の場合は、この分野の開発に参加してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
