ホームページ  >  記事  >  php教程  >  PHP で動的な画像を生成するにはどうすればよいですか?

PHP で動的な画像を生成するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-21 09:04:561282ブラウズ

综述:PHP中有一组图像函数,可以动态生成gif格式的图像数据流并输出到服务器,这样我们就可以按照用户的需求及时地在线生成图像。下面我们以生成一个按钮为例子来谈一谈如何用PHP生成动态图像。

  动态图像是怎样被生成的?

  让我们先看看下面的代码,如果第一次浏览该页或者用户置表单为空,则默认值为"Go!";如果用户输入了信息并提交表单,这段代码将被重新调用且进行初始化。

<?
If (!isset($string)||$string==""){$string="Go!";}
?>
<form action=button.php>
Button text;
<input type=text name=string value="<? pint $string; ?>">
<input type=submit>
</form>

这个文件的其余的部分就是简单的在表格中输出一些元素和调用其他的文件。

  现在,我们开始制作按钮。第一个例子是生成一个黑边儿绿底儿的椭圆文字按钮。我们通过一个标准的<IMG>标签儿来显示按钮图象;SRC的值是生成按钮图象的文件。

<img src="green_ellipse.php?string=<? print rawurlencode($string); ?>"> 

下面让我们看看生成椭圆的文件"green_ellipse.php"

  生成椭圆

  这里列出了green_ellipse.php的代码,我们以Header()开头,可以向Apache服务器发从一个HTTP的头信息,这一步告诉Server使用的什么数据,本例中我们使用的是GIF的格式:

<?
Header("Content-Type: image/gif");

//现在我们将生成一幅空的图象,并且将其赋值给变量$id:
$id=ImageCreate($img_width,$img_height);
//图像润色
……
//使用内嵌的五号字在按钮上写上文字,最后给按钮上的文字设置变量$black的颜色:
ImageString($id, 5,($img_center_x-($str_width/2+1), img_center_y-($str_height/2)), $string, $black);
//最后,把图象从内存中道出到标准输出缓冲--这是Server将得到的图象的内容:
ImageGIF($id);
?> 

这个程序只适合像"Go!"这样短的按钮,像"Please click here!"这样的长字符串就会不好看。没关系,看看下面这个圆边矩形。

  生成更美观的图样

  这个例子将生成一个黑边儿,黄色棱角的图样。你可以看到这种方法比第一个例子更适合长字符串的按钮。

  如果你看了前面的代码,这里的代码你就容易看懂了。我们将从生成按钮的形状开始。

  在每一个字符串的结尾处建立20个象素的边缘,并在字符串的上下各建10个象素的边缘:

<?php
初始化,参数设定
……
在图象的左端画了一个半圆,再从六点通过九点画到12点:
ImageArc($id,20,$img_center_y,20,$str_height+20,90,270,$black);
对于右端,是同上面一样的,只是从右端20象素开始画起,并且掠过相反的半圈儿--从12点通过3点到六点:
ImageArc($id,($img_width-20),$img_center_y,20,$img_height+20,270,90,$black);
最后,从一端的端顶向另一端画一条直线,同样在底部也画一条直线。这样闭合了形状的内部。
ImageLine($id,20,0,($img_width-20),0,$black);
ImageLine($id,20,$img_height-1,($img_width-20),$img_height-1,$black);
在这个区域里填充变量$yellow所定义的颜色,并充满整个区域:
ImageFillToBorder($id,$img_center_x,$img_center_y,$black,$yellow);
再将字符串写入到图象中,之后向标准输出打印图象:
ImageString($id, 5, ($img_center_x-($str_width/2)+1,($img_center_y-($str_height/2)), $string, $black);
ImageGIF($id);
?> 
  如何修改一幅已经存在的图象?

  在这里,我们将修改一幅已经存在的图象,将其存为一幅新的图象文件,同时显示一幅动态的图象。首先,我们把mymonkdy.gif调入内存,并将其赋值给$id。

<?
$id=ImageCreateFromGif("mymonkey.gif");
//现在我们设置字体颜色,并将它放到图象上。
$yellow=ImageColorAllocate($id,,255,255,0);
//以左上角为(0,0)点,从(10,20)地方开始用内嵌四号字体写上字符串,同时我将它设为大写,并加了感叹号,以使其显得更加生动。
ImageString($id,4,10,20,strtoupper($string."!"),$yellow);
//现在我们将图象从内存存入文件http://edu.cnzz.cn/NewsInfo/newmonkey.gif。
ImageGIF($id,"http://edu.cnzz.cn/NewsInfo/newmonkey.gif");
?>
这样就差不多了:http://edu.cnzz.cn/NewsInfo/newmonkey.gif可以用来显示了,浏览器的设置是这样的:
<td>
<img src="http://edu.cnzz.cn/NewsInfo/newmonkey.gif" border=0>
</td>
</tr>
</table>

GD サポートなしで PHP で統計データをグラフィック表示するにはどうすればよいですか?

グラフィックを制御するために HTML を使用すると、ニーズを完全に満たすことができます。 始める前に、グラフィック制御の HTML の構文を確認してみましょう。

幅と高さの2つのパラメータを制御する必要があります。以下に例を示します:

$rows []={12,45,43,23,32,87,14,22,19,40}; //配列の初期化、データから取り出すことができます。
$sums=0;
for ( $i = 0 ; $i for ( $i = 0 ; $i if ($sums * $rows[$i] ) { //0の場合、0で割る際のオーバーフローを避けるため処理は行われません
$tmp=$rows[$i]/$sums*100 ;
echo " "
//出力グラフィックス、http://edu.cnzz .cn/NewsInfo/ bar.gif は 1 点のみのグラフィック ファイルです。これは、縦方向の高さを変更するだけです。 ";
echo "
}
}
?>

PHPとFlashアニメーションの間の相互作用を実現するには?

 本人認証にFlashとphpの例を使用してみましょう:

まずメインシーンに 3 つのテキストフィールドとボタンを追加します。

次に、これら 3 つのテキストフィールドに名前を付けます。

1つ目はユーザー名を入力するためのnameです
2つ目はパスワードを入力するために使用されます
3つ目は出力であり、判定結果を表示するために使用されます。

最後のステップは、ボタンのクリックにアクションを追加することです。

変数の読み込み ("check.php", 1, vars=POST)

このアクションには多くの内容が含まれています。最初は、チェックするメイン シーンのいくつかの変数値を渡します。 2 つ目も check.php からの出力値を返すことです。  2 番目のテキスト ボックスの内容と、そのパスワードが最初のテキスト テキスト ボックス名

if($passwd==$password)

echo "output=welcome " で見つかったパスワードであるかどうかを確認します。 $name. " これは php と flash によるプログラムです"; // 等しい場合、出力テキスト ボックスの値をウェルカム メッセージと同じに設定します

echo "output=sorry , " .$name." パスワードが正しくありません"; //等しくない場合は、エラー メッセージが表示されます。
?>






声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。