ホームページ >バックエンド開発 >PHPチュートリアル >photoshop cs2 v9.0 グリーン中国語版 php 画像関数の例 (非オリジナル)
次の方法は 1 つの方法です:
if(!function_exists('imagecreate')) {
die('このサーバーは GD モジュールをサポートしていません');
サポートされていない場合は、どのように設定しますか? gd モジュールの dll ファイルを修正し、サーバーを再起動します。
以降、PHP 描画を PS と呼びます。
PS を使用する場合は、次の手順を実行する必要があります。
1: ファイルを作成します。基本的な PS オブジェクト ($image であるとします)、背景を塗りつぶします (デフォルトは黒)。その後のすべての PS 操作は、この背景画像に基づいて行われます。
3: この画像を出力します。オブジェクトを削除し、使用されているメモリをクリアします。
まず、一般的に使用される関数をいくつか理解しましょう。これらの関数は PHP マニュアルで詳しく紹介されており、一般的には
resource imagecreate (int x_size, int y_size)
imagecreate() です。 ) は、サイズ x_size および y_size の空白の画像が取得されることを表す画像識別子を返します。
この関数は基本的に imagetruecolor($width,$height) と同じです
-------------------------------- -- ------------
int imagecolorallocate ( resource image, int red, int green, int blue )
imagecolorallocate() は、指定された RGB コンポーネントで構成される色。 image パラメータは、imagecreatetruecolor() 関数の戻り値です。赤、緑、青は、それぞれ目的の色の赤、緑、青の成分です。これらのパラメータは、0 ~ 255 の整数、または 16 進数の 0x00 ~ 0xFF です。 image で表される画像で使用される各色を作成するには、imagecolorallocate() を呼び出す必要があります。
------------------------------------------------- --------
bool imagefill (resource image, int x, int y, int color)
imagefill() は画像の座標 x, y の色で実行されます (画像の左上隅は0, 0) 領域の塗りつぶし (つまり、x、y 点と同じ色の点および隣接する点が塗りつぶされます)。
------------------------------------------------- --------
bool imageline ( resource image, int x1, int y1, int x2, int y2, int color )
imageline() は、イメージ image 内の座標 x1, y1 から x2, y2 までのカラー color を使用します(画像の左上が0,0) 線分を描きます。
------------------------------------------------- --------
bool imagestring (リソース画像、int font、int x、int y、string s、int col)
imagestring() は、col color を使用して、 image で表される画像の x に文字列 s を描画します。 y 座標 (これは文字列の左上隅の座標であり、画像全体の左上隅は 0, 0 です)。フォントが 1、2、3、4、または 5 の場合は、内蔵フォントが使用されます。
------------------------------------------------- --------
array imagettftext (リソース画像、float サイズ、float 角度、int x、int y、int color、string fontfile、string text)
この関数はより重要であり、多くのパラメーターがあるため、ここでは説明しませんが、主に画像に単語を書き込みます。上記の関数と似ていますが、前者よりも強力です。 ----- -------------------------------
bool imagefilltoborder ( リソース画像、int x、int y、int border, int color )
imagefilltoborder() は、x, y (画像の左上隅が 0, 0) 点から開始され、色の境界線に達するまで色で領域を塗りつぶします。 [注: 境界線内のすべての色が塗りつぶされます。指定した境界線の色がポイントと同じ場合、塗りつぶしはありません。画像に境界線の色が存在しない場合は、画像全体が塗りつぶされます。 】
------------------------------------------------
bool imagefilledellipse ( resource image, int cx, int cy, int w, int h, int color )
imagefilledellipse() 画像内に cx, cy (画像の左上隅が 0, 0) を中心とした画像を描画します楕円形のイメージで表されます。 w と h はそれぞれ楕円の幅と高さを指定します。楕円は色で塗りつぶされます。成功した場合は TRUE、失敗した場合は FALSE を返します。
================================================ ===
出力画像データ: imagepng($image[,$filename])
=============================== ===== ====================
例 1: 青い背景と交差した白い線のあるグラフィックを出力します
$width=35; $height=35 ;
//オブジェクトを作成
$image=imagecreate($width,$height);
//色を抽出
$color_white=imagecolorallocate($image,255,255,255);//白
$color_blue=imagecolorallocate($) image,0, 0,108);//Blue
imagefill($image,0,0,$color_blue)
//描画
//線幅
imagesetthickness($image,3); 0, $width,$height ,$color_white);
imageline($image,$width,0,0,$height ,$color_white);
// オブジェクトをヘッダーに送信します
header('content-type:image /png') ;
imagepng($image);
/*
//オブジェクトをファイルに送信します
$filename="ex1.png";オブジェクトを破棄します
imagedestroy($ image);
?>
出力画像:
オンライン デモンストレーション: http://www.phzzy.org/temp/5do8/ex1.php
例 2: 陰陽図
< ?php
$width=400;
$height=400;
$image=imagecreatetruecolor($width,$height);
//カラーを抽出する
$color_black=imagecolorallocate($image,0,2,0);//
$color_white=imagecolorallocate($image, 255,255,255);//ホワイト
$color_blue=imagecolorallocate($image,0,0,108);//ブルー
$color_red=imagecolorallocate($image,151,0,4);//赤
$color_my=imagecolorallocate($ image,192,192,255);//背景
$color_temp=imagecolorallocate($image,199,199,199);//背景
//描画
imagefill($image,0,0,$color_white); //最初の円は大きな円
imagefilledarc ($image,$width/2,$height/2,$height,$height,0,360,$color_blue,IMG_ARC_PIE)
//2 つの小さな円
imagefilledellipse ($image); ,$width/2,$height /4 ,$height/2,$height/2,$color_red);
imagefilledellipse ($image,$width/2,$height/4 * 3,$height/2,$height); /2,$color_blue);
/*imagefilledellipse -- 楕円を描いて塗りつぶす*/
imagefilledellipse ($image,$width/2,$height/2,$height,$height,-90,90,$color_red) ,IMG_ARC_PIE);
imagefilledellipse ($image ,$width/2,$height/4 * 3,$height/2,$height/2,$color_blue);
//ヘッダーにオブジェクトを送信する
header('content -type:image/png');
imagepng ($image)
/*
//オブジェクトをファイルに送信します
$filename="ex1.png"; /
//オブジェクトを破棄します
imagedestroy($image);
デモ:
http://www.phzzy.org/temp/5do8/ex2.php
例 3: 3D 画像 - クール
< ;?php
$width=400;
$height=400 ;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 0xFF, 0xFF); $image, 0xC0, 0xC0, 0xC0);
$darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);
$darknavy = imagecolorallocate($image) , 0x00, 0x00, 0x50);
$red = imagecolorallocate($image, 0xFF, 0x00, 0x00);
imagefill($image,0x00, $white);
// 3D 効果を作成します
for ( $i = $height /2 +20; $i > $height /2; $i--) {
imagefilledarc($image, $width/2, $i, $width/2, $height /2, 0 , 45, $darknavy, IMG_ARC_PIE);
imagefilledarc($image, $width/2, $i, $width/2, $height /2, 45, 75 , $darkgray, IMG_ARC_PIE);
imagefilledarc($image, $width/2, $i, $width/2, $height /2, 75, 360 , $darkred, IMG_ARC_PIE);
imagefilledarc($image, $width/2, $height /2, $width/2, $height /2, 0, 45, $navy, IMG_ARC_PIE);
imagefilledarc($image, $width/2, $height / 2, $width/2, $height /2, 45, 75 , $gray, IMG_ARC_PIE);
imagefilledarc($image, $width/2, $height /2, $width/2, $height /2, 75, 360, $red, IMG_ARC_PIE);
// フラッシュ画像
header('Content-type: image/png');
imagedestroy($image);ファイル
$filename="ex1.png";
imagepng($image,$filename);
出力:
デモ: http://www.phzzy.org/temp/5do8/ex3。 php
例 4: 単純な検証コード
PHP で検証コードを作成するのは非常に簡単です。簡単なアイデアは次のとおりです:
ランダムなシードを生成し、ランダムな文字を抽出し、グラフィックスに接続します。色覚異常を防ぐために、色をランダムに抽出するか、以下を参照してください。 ;
$image=imagecreate( $width,$height);
$colorarrs=array(
imagecolorallocate($image,255,255,255),//白
imagecolorallocate($image,0 ,0 , 0)//黒
); ($sessionval);
imagesetthickness($image,3);
//文字列の数をランダムに取得します
$strsize=rand(3,5); ;
//1 画像に文字列を書き込みます
for($i=0;$i<$strsize;$i++){
$sessionval .=$sourcestrings[$i_temp];
$ f
$y_i = $height/2 + $font_size /3;
imagechar($image,5, 1+ $i * $width /$strsize,5,$sourcestrings[$i_temp],$fontcolor); }
//セッションに書き込み、後の検証のために
unset($_SESSION['cjjer']) を使用します
$_SESSION['cjjer'] = $sessionval
//ノイズを追加します
for($i=0;$) i< $width /$height *2;$i++)
{ $i_x=rand(0,$width)
$pixelcolor=imagecolorallocate($image,rand(0,255); ), rand(0,255),rand(0,255));
imagesetpixel($image,$i_x,$i_y,$pixelcolor);
header('content-type:image/png'); );
imagedestroy($image);
?>
生成されたスタイルのデモ:
オンライン デモ: http://www.phzzy.org/temp/5do8/ex4_login.php
生成された画像が十分な豪華さですが、多くのユーザーにははっきりと見えません。そこで、いくつかの明るい色を自分で設定して出力し、colorarrs 配列を拡張してみましょう:
$colorarrs=array(
imagecolorallocate($image,255,255,255),
imagecolorallocate($ image,0,0,0),
imagecolorallocate($image,0,70,0),
imagecolorallocate($image,92,0,12),
imagecolorallocate($image,0,0,128),
imagecolorallocate($ image,233,10,216)
);
次に、行 23 を (行 17) に変更します:
$f
出力:
オンラインデモ: http://www.phzzy.org/temp/5do8/ex5_login.php
例 5 : より大きくてクールな確認コード
PS 画像はまだ比較的小さいですが、いくつかの理由 (個人のサイトはクールでありたい、私だけ、商用サイトはスタイリッシュに遊んでユーザーを引き付けたい、Google だけ、詳細は後ほど)、場合によっては 200 ピクセルを超えることもあります。この場合、解決策の 1 つは、以前に生成された小さな画像を強制的に大きくすることです。これは明らかに、ブロードバンドが最も重要な問題ではありません。さらに見栄えの良い生成メソッドをいくつか紹介します。 width=600;
$height=100;
if($height < $width /6)
$sourcestrings="0123456789aqwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
$image= 画像作成( $width,$ height);
$white=imagecolorallocate($image,255,255,255);
//フォントライブラリをロード
$f
putenv('"gdf
$) f
$f / 2);
//文字列を取得します
unset($sessionval);
for($i=0;$i<$strsize;$i++);
$i_temp= rand(1,62);
$sessionval .=$sourcestrings[$i_temp];
$x_i =$font_size + $i *$width / ($strsize+1); 2;
$ angle_i=rand(-120,120);
$f
imageTTFText($image,$font_size,$x_i,$y_i,$fontcolor_a,$fontname,$sourcestrings[$i_temp]); unset($_SESSION ['cjjer']);
$_SESSION['cjjer'] = $sessionval;
//ノイズポイントの数
for($i=0;$i<$width * $height / 100;$ i++)
$i_x=rand(0,$width);
$i_y=rand(0,$height)
imagesetpixel($image,$i_x,$i_y,imagecolorallocate($image,rand(0,255),ランド(0,2550 ),ランド(0,255)));
// オブジェクト
header('content-type:image/png');
imagedestroy($image);
オンライン テスト: http://www.phzzy.org /TEMP/5DO8/EX6_LOGIN.PHP:最初は幅と高さです。 ;オブジェクトを白にします:
$image=imagecreate($width,$height);
imagefill($image,0,0,$white);必要な検証コードをロードします フォント:
$f//現在のルート ディレクトリに戻り、ここにフォント ファイルをコピーします。フォント ファイルは *.ttf ファイルです
putenv('"gdf
$f
高さを定義します文字、ここでは高さの半分に設定します:
$ f / 2);
変数をクリアし、生成される文字数をランダムに設定します:
$strsize=rand(5,8); ;
ループして文字を 1 つずつ入力します:
ループの文字列を取得し、変数に追加して後でセッションに書き込みます
$i_temp=rand(1,62); $sourcestrings[$i_temp];
画像に書き込まれた文字列の位置を取得します (x 座標と y 座標)
$x_i =$font_size + $i *$width / ($strsize+1); / 2;
正面から見た傾きを設定します
$f
imageTTFText($image,$font_size,$angle_i,$x_i); ,$y_i,$fontcolor_a,$fontname,$sourcestrings[$i_temp] );
この関数について質問がある場合は、関連情報を確認してください。
セッションに書き込んで、登録コードを使用します。
unset($_SESSION['cjjer']);
$_SESSION['cjjer'] = $sessionval;
ノイズポイントの追加:
//ノイズポイントの数
for($i=0;$i<$width * $height / 100;$i++)
{
$i_x=rand(0,$width);
$i_y=rand(0,$height);
imagesetpixel($image,$i_x,$i_y,imagecolorallocate($image) ,ランド(0,255),ランド(0,2550),ランド(0,255)));
ヘッダーへの出力:
header('content-type:image/png');//この行は、デフォルトで出力できる png 画像であることを示しますが、ヘッダー形式ではありません。画像の
imagepng($image);
imagedestroy ($image);
独自のフォント ライブラリをロードして、フォントの高さを設定します $angle_i=rand(-120,120); color $fontcolor_a と乱数の数: $strsize= rand(5,8);
例 6: 画像に透かしを入れてサムネイルを生成する
従来の ASP ページの透かしとサムネイルの生成は比較的面倒で、一般的には他のコンポーネントが使用されますが、ご想像のとおり、PHP はこれらのことを 30 行未満のプログラムで簡単に実行できます。
$source="my.jpg"; を参照してください。 ;
$str='私はハンサムです、あなたはMMですか?';
$width=imagesx($image); $color_red= imagecolorallocate($image,111,0,0);//レッド
$f "//simsun.ttc"
$str=iconv('GB2312','UTF-8',$str); $f
$angle=25;
$fromy=$height/2;
imagettftext($image,$fontsize,$angle,$fromy,$color_red,$font, $str) ;
$width_temp=images($image) * $zoom;
$height_temp=imagesy($image) * $zoom; image,0 ,0,0,0,$width_temp, $height_temp,$width,$height);
$file_zoomname="my_zoom_jpeg.jpg";
imagedestroy( $img);
?>
元画像:
生成されたjpg画像:
元画像70K ここでgifを生成するとファイルが18kを超えるので、pngを使用します。サムネイルを生成するためのフォーマットです。
コード分析:
$source="my.jpg"; //ソース画像
$zoom=0.5; //ズーム率
$str='男、MM ですか?'; // 透かしテキスト
ソース画像を読み込みます (透かしなしでは読み込みません):
$image=imagecreatefromjpeg($source);
長さと幅のサイズを取得します:
$width=imagesx($ image) ;
$height=imagesy($image);
透かしフォントを設定します。中国語を使用しているため、中国語フォントライブラリをインポートする必要があります。そうしないと、文字化けします。エンコーディングを変換する必要があります
$f "//simsun.ttc";
$str=iconv('GB2312','UTF-8',$str);
開始点、フォント サイズ、表示角度を設定します。文字列:
$f
$angle=25;
$fromx=$width/5;
imagettftext($image,$fontsize,$angle,$fromx,$fromy,$color_red, $font,$str);
ズーム サイズの要件に従って、新しいサイズのオブジェクトを生成します:
$width_temp=imagesx($image) * $zoom; =imagecreatetruecolor($width_temp,$height_temp);
ソース画像を新しい画像にコピーすると、gd ライブラリの imagecopyresize によって自動的にサイズが調整されます
imagecopyresize ($img,$image,0,0,0,0,$width_temp, $height_temp) ,$width,$height);
小さな画像を生成し、オブジェクトをクリアします:
$file_zoomname="my_zoom_jpeg.jpg";
imagedestroy($img) );
これは透かしのコア技術です。
上記では、photoshop cs2 v9.0 green 中国語版の内容を含む、Photoshop cs2 v9.0 green 中国語版の PHP 画像関数の大きな例を紹介しました (オリジナルではありません)。PHP に興味のある友人に役立つことを願っています。チュートリアル。