2010年3月3日水曜日

画像アップの流れ 解説

<?php
//===============================================================================
//   ■■ MASAGO 離れPHP島        :GDライブラリ(3) ■■
//        Class        :php20040218.php
//        Copyright    :masago.kir.jp
//        Made by        :Masago
//        Date        :2004/02/18
//        Last Update    :2004/02/18
//      
//        Comment        :大きさを変更しようっ
//      
//        Caution        :GDライブラリ[3]
//==============================================================================
//-----------------------------------------------
// □ 変数の初期化
//-----------------------------------------------
$error        = "";        //エラー
//======================================================
// ■ POSTされたときはログイン情報をチェック ■
//======================================================
if ($_SERVER["REQUEST_METHOD"]=="POST"){
    //------------------------------------------------------
    // □ 戻るボタン押下
    //------------------------------------------------------
    if (isset($_POST["submit"])){
        //------------------------------------------------------
        // □ POSTされた名前を変数に保存
        //------------------------------------------------------
        $img1        = $_FILES['img1'];            // アップロードファイルオブジェクト
        $img1tmp    = $_FILES['img1']['tmp_name'];        //tmpファイル名
        $img1name    = $_FILES['img1']['name'];        //ローカルファイル名
        $img1size    = $_FILES['img1']['size'];        //サイズ
        $img1type    = $_FILES['img1']['type'];        //タイプ
        $cwidth        = $_POST['cwidth'];            // 変更幅
        $cheight    = $_POST['cheight'];            //変更縦
        $cwidth      = mb_convert_kana($cwidth,"as",EUC);    //半角に
        $cheight      = mb_convert_kana($cheight,"as",EUC);    //半角に

            if (!ereg("^[0-9]*$",$cwidth)){$error="幅に誤りがあります。";}
            if (!ereg("^[0-9]*$",$cheight)){$error="縦に誤りがあります。";}
        if ($cwidth>800){$error="幅が大きすぎます";}
        if ($cheight>600){$error="縦が大きすぎます";}
        if ($error==""){
            //------------------------------------------------------
            // ■ アップロード画像チェック
            //------------------------------------------------------
            $kaku="";
            //POSTでHTTPでUPしたfileがあったら?
            if (is_uploaded_file($img1tmp)) {
                //filetypeがgifだったら?
                if ($img1type=="image/gif"){
                    $error="gif画像は操作できません";
                }
                //x-pngやjpaeだったら拡張子を変換
                if ($img1type=="image_png" || $img1type=="image/x-png"){$kaku=".png";}
                if ($img1type=="image/jpeg" || $img1type=="image/pjpeg"){$kaku=".jpg";}
                //変換した拡張子が空だったら?
                if ($kaku==""){$error="アップロード画像に誤りがあります";}
                //エラーがなく拡張子空な場合?
                if ($kaku!="" && $error==""){
                    //---------------------------------------
                    // □ 画像のサイズを変更
                    //---------------------------------------
                    //listで配列変数の割り当て、幅と縦
                    list($width,$height)=getimagesize($img1tmp);
                    //imagecreatefromjpegはファイルまたは、URLから画像を作成する
                    $src=@imagecreatefromjpeg($img1tmp);
                    //ダミーの黒い画像を返します
                    $dst=imagecreatetruecolor($cwidth,$cheight);
                    //$dst変数に$srcに格納された画像をxyを指定してコピーする
                    imagecopyresized($dst,$src,0,0,0,0,$cwidth,$cheight,$width,$height);
                    //↑↑↑でコピーされた画像をPHPスクリプトでファイルで保蔵、または直接表示出来ます。
                    $boRtn=imagejpeg($dst,"20040218/" .date("YmdHis") .$kaku);
                    if ($boRtn){
                        $error="アップロードに成功しました。";
                    }else{
                        $error="アップロードに失敗しました。";
                    }
                }else{
                    $error="ファイルの種類に誤りがあります。";
                }
            }
        }
    }
}else{
    $cwidth="100";
    $cheight="100";
}
//======================================================
// ■ H T M L ■
//======================================================
?>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=euc-jp">
<META HTTP-EQUIV="Cache-control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<TITLE>2004/02/18 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="phpsc.php?s=php20040218s.php">このページのソース</A>
<CENTER>
<BR><BR>
<B>画像をアップロードしてサイズ変更</B><BR><BR>
* jpg,pngのみ有効。ファイルサイズは50Kまで *<BR>
</FONT>
<BR>
<?php
//---------------------------------------------
// □ エラーメモリを表示
//---------------------------------------------
if ($error!=""){echo "<FONT COLOR=\"#ff0000\">$error</FONT>";}
?>
<BR>
<BR>
<?php
//---------------------------------------------
// □ フォーム
//---------------------------------------------
?>
<FORM NAME="objform" ACTION="<?php echo $_SERVER['SCRIPT_NAME']; ?>" METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="50000">
画像ファイル:<INPUT TYPE="file" NAME="img1" SIZE="40"><BR>
幅:<INPUT TYPE="text" NAME="cwidth" SIZE="5" VALUE="<?php echo $cwidth; ?>">pix<BR>
縦:<INPUT TYPE="text" NAME="cheight" SIZE="5" VALUE="<?php echo $cheight; ?>">pix<BR>
<INPUT TYPE="submit" NAME="submit" VALUE="アップロード">
</FORM>
<BR>
<HR WIDTH="600">
<BR>
<?php
//---------------------------------------------
// □ アップロードされた画像を表示
//---------------------------------------------
//ファイルを取得
$cnt=0;
$filename=array();
if ($dir = @opendir("20040218")) {
    while($file = readdir($dir)) {
        if (!is_dir($file)){
            $cnt++;
            $filename[$cnt]=$file;
        }
    }
    closedir($dir);
}
//SORT!!
rsort($filename);
$cnt=0;
?>
<TABLE BORDER="0" WIDTH="600">
<?php
$cnt=0;
foreach($filename as $value){
    $cnt++;
    if ($cnt==1){echo "<TR>";}
    echo "<TD VALIGN=\"center\" ALIGN=\"center\">\n";
    echo "<IMG BORDER=\"0\" SRC=\"20040218/$value\">\n";
    echo "</TD>\n";
    if ($cnt==4){
        echo "</TR>\n";
        $cnt=0;
    }
}
if ($cnt<4){
    $cnt=4-$cnt;
    echo "<TD COLSPAN=\"$cnt\">&nbsp;</TD>\n";
    echo "</TR>\n";
}
?>
</TABLE>
</CENTER>
</BODY>
</HTML>

0 件のコメント:

コメントを投稿