<?php
//===============================================================================
//   ■■ PHP離れ島        :サンプル ■■
//        Class        :php20040103s.php
//        Copyright    :masago.kir.jp
//        Made by        :Masago
//        Date        :2004/01/03
//        Last Update    :2004/01/03
//        
//        Comment        :画像作っちゃった♪
//        
//        Caution        :GDライブラリ[1]
//
//==============================================================================
//----------------------------------------------- 
// □ 変数の初期化
//-----------------------------------------------
$error        "";        //エラー
//======================================================
// ■ POSTされたとき■
//======================================================
if ($_SERVER["REQUEST_METHOD"]=="POST"){
    
//------------------------------------------------------
    // □ ボタン押下
    //------------------------------------------------------
    
if (isset($_POST["submit"])){
        
//----------------------------
        // ■ POST変数から移す
        //----------------------------
        
$bcolor=$_POST['bcolor'];
        
$fcolor=$_POST['fcolor'];
        
$kata=$_POST['kata'];
        
$x=$_POST['x'];
        
$y=$_POST['y'];
        
$ex=$_POST['ex'];
        
$ey=$_POST['ey'];
        
//----------------------------
        // ■ タグを無効化 
        //----------------------------
        
$bcolor htmlspecialchars($bcolorENT_QUOTES);
        
$fcolor htmlspecialchars($fcolorENT_QUOTES);
        
$x htmlspecialchars($xENT_QUOTES);
        
$y htmlspecialchars($yENT_QUOTES);
        
$ex htmlspecialchars($exENT_QUOTES);
        
$ey htmlspecialchars($eyENT_QUOTES);
        
//----------------------------
        // ■ 半角にする
        //----------------------------
        
$bcolor  mb_convert_kana($bcolor,"as","UTF-8");
        
$fcolor  mb_convert_kana($fcolor,"as","UTF-8");
        
$x  mb_convert_kana($x,"as","UTF-8");
        
$y  mb_convert_kana($y,"as","UTF-8");
        
$ex  mb_convert_kana($ex,"as","UTF-8");
        
$ey  mb_convert_kana($ey,"as","UTF-8");
        
//----------------------------
        // ■ 内容チェック
        //----------------------------
        
if (!ereg("^#[0-9a-zA-Z]{6}",$bcolor)){$error="背景色が正しくありません";}
        if (!
ereg("^#[0-9a-zA-Z]{6}",$fcolor)){$error="図形色が正しくありません";}
        if (!
ereg("^[0-9]*",$x)){$error="開始x座標が正しくありません";}
        if (!
ereg("^[0-9]*",$y)){$error="開始y座標が正しくありません";}
        if (!
ereg("^[0-9]*",$ex)){$error="終了x座標が正しくありません";}
        if (!
ereg("^[0-9]*",$ey)){$error="終了y座標が正しくありません";}
        if (
$x>400){$error="x座標が正しくありません";}
        if (
$y>400){$error="y座標が正しくありません";}

        if (
$error==""){
            
$error="POST";
            
//----------------------------
            // ■ 図形を描く
            //----------------------------

            //領域作成
            
$image imagecreate(400400);

            
//背景色の描画
            //16進数から10進数へ変換 HexDec
            
$r=HexDec(substr($bcolor,1,2));
            
$g=HexDec(substr($bcolor,3,2));
            
$b=HexDec(substr($bcolor,5,2));
            
$bgcolor = @imagecolorallocate($image,$r,$g,$b);
            
//色の作成
            
$r=HexDec(substr($fcolor,1,2));
            
$g=HexDec(substr($fcolor,3,2));
            
$b=HexDec(substr($fcolor,5,2));
            
$frcolor imagecolorallocate($image$r$g$b);
            switch(
$kata){
                case 
"1":
                    
//線を描く
                    
imageline($image,$x,$y,$ex,$ey,$frcolor);
                    break;
                case 
"2":
                    
//四角を描く
                    
imagefilledrectangle($image,$x,$y,$ex,$ey,$frcolor);
                    break;
                case 
"3":
                    
//丸を描く
                    
imagefilledellipse($image,$x,$y,$ex,$ey,$frcolor);
                    break;
            }
            
//--------------------------------------
            // ■ PNG画像にしてファイルに保存
            //--------------------------------------
            
$file=date("YmdHis") .".png";
            @
imagepng($image,"./20040103/" .$file);
            
//--------------------------------------
            // ■ リソースの開放
            //--------------------------------------
            //色
            
imagecolordeallocate($image,$bgcolor);
            
imagecolordeallocate($image,$frcolor);
            
//画像リソースの開放
            
imagedestroy($image);
        }
    }
}else{
    
$kata="1";
    
$x="100";
    
$y="100";
    
$ex="200";
    
$ey="200";
    
$bcolor="#ffffff";
    
$fcolor="#000000";
}
//======================================================
// ■ H T M L ■
//======================================================
?>
<HTML> 
<HEAD> 
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=utf-8">
<META HTTP-EQUIV="Cache-control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<TITLE>2004/01/03 Sample</TITLE> 
</HEAD> 
<BODY BGCOLOR="#ffffff" style="margin:0px" marginwidth="0" marginheight="0">
<FONT SIZE="2">
<A HREF="phpmenu.php">メニューへ</A>&nbsp;&nbsp;
<A HREF="php20040103.php">PHP離れ島へBACK</A>&nbsp;&nbsp;
<A HREF="phpsc.php?s=php20040103s.php">このページのソース</A>
<CENTER> 
<BR><BR>
<B>画像を描く</B><BR><BR>
</FONT>
<?php
//--------------------------------------------- 
// □ エラーメモリを表示
//---------------------------------------------
if ($error!="" && $error!="POST"){echo "<FONT COLOR=\"#ff0000\">$error</FONT>";}
?> 
<BR>
<BR>
<?php
//--------------------------------------------- 
// □ フォーム
//---------------------------------------------
?>
400 X  400 の画像がベースです。<BR>
それより大きい数値、または数値以外の文字を入れると画像が表示されませんので注意(^_^)
<FORM NAME="objform" ACTION="<?php echo $_SERVER['SCRIPT_NAME']; ?>" METHOD="POST">
<TABLE BORDER="0"> 
<TR><TD>背景色:</TD><TD><INPUT TYPE="text" NAME="bcolor" VALUE="<?php echo $bcolor?>"></TD></TR>
<TR><TD>図形種類:</TD><TD><SELECT NAME="kata">
<OPTION VALUE="1" <?php if($kata=="1"){echo "SELECTED";} ?>>線    
<OPTION VALUE="2" <?php if($kata=="2"){echo "SELECTED";} ?>>四角    
<OPTION VALUE="3" <?php if($kata=="3"){echo "SELECTED";} ?>>丸    
</SELECT>
</TD></TR>
<TR><TD>図形色:</TD><TD><INPUT TYPE="text" NAME="fcolor" VALUE="<?php echo $fcolor?>"></TD></TR>
<TR><TD>開始点(中心x点):</TD><TD><INPUT TYPE="text" NAME="x" VALUE="<?php echo $x?>"> 終了x点(幅):<INPUT TYPE="text" NAME="ex" VALUE="<?php echo $ex?>"></TD></TR>
<TR><TD>開始点(中心y点):</TD><TD><INPUT TYPE="text" NAME="y" VALUE="<?php echo $y?>"> 終了y点(高さ):<INPUT TYPE="text" NAME="ey" VALUE="<?php echo $ey?>"></TD></TR>
</TABLE>
<INPUT TYPE="submit" NAME="submit" VALUE="画像作成">
</FORM>  
<BR>
<?php
//--------------------------------------------- 
// □ 画像表示
//---------------------------------------------
if ($error=="POST"){
    echo 
"<IMG SRC=\"" ."./20040103/" .$file ."\" BORDER=\"0\">";
}
?>
</CENTER>
</BODY> 
</HTML>