rtoss - Blame information for rev 52

Subversion Repositories:
Rev:
Rev Author Line No. Line
51 roytam 1 <?php
2 /***
3 * Reconstruction by Wastepaper Basket
52 roytam 4 * サムネイルカッター (画像一覧)by ToR
51 roytam 5  
52 roytam 6 * ※PHPオプションにGDが必要です(無料鯖ではダメなところが多い
7 * $_GET等使用してます。古いバージョンのPHPでは$_GET→$HTTP_GET_VARS $_SERVER→$HTTP_SERVER_VERS
51 roytam 8 **/
9  
52 roytam 10 $title  = '中國DOS聯盟論壇專用上傳區';       //タイトル
11 $upphp           = 'upload.php';                //アップローダ
12 $img_dir         = "./img/";                    //画像一覧ディレクトリ
13 $thumb_dir = "./imgs/";                 //サムネイル保存ディレクトリ
14 $ext                     = ".+\.png$|.+\.jpe?g$";       //拡張子,GIFはGDのバージョンによっては無理
15 $W                               = 120;                 //出力画像幅
16 $H                               = 120;                 //出力画像高さ
17 $cols                   = 2;                            //1行に表示する画像数
18 $page_def       = 4;                    //1ページに表示する画像数
51 roytam 19  
20 if ($_GET["cmd"]=="min" && isset($_GET["pic"])) {
52 roytam 21         $src = $img_dir.$_GET["pic"];
51 roytam 22  
52 roytam 23         // 画像の幅と高さとタイプを取得
24         $thumbout = $thumb_dir.str_replace(strrchr($_GET["pic"],'.'),'.jpg',$_GET["pic"]);
25         if(!file_exists($thumbout)) {
26                 $size = GetImageSize($src);
27                 switch ($size[2]) {
28                         case 1 : $im_in = ImageCreateFromGIF($src);     break;
29                         case 2 : $im_in = ImageCreateFromJPEG($src); break;
30                         case 3 : $im_in = ImageCreateFromPNG($src);     break;
31                 }
32                 // 読み込みエラー時
33                 if (!$im_in) {
34                         $im_in = ImageCreate($W,$H);
35                         $bgc = ImageColorAllocate($im_in, 0xff, 0xff, 0xff);
36                         $tc     = ImageColorAllocate($im_in, 0,0x80,0xff);
37                         ImageFilledRectangle($im_in, 0, 0, $W, $H, $bgc);
38                         ImageString($im_in,1,5,30,"Error loading {$_GET["pic"]}",$tc);
39                         header('Content-Type: image/png');
40                         ImagePNG($im_in);
41                         exit;
42                  }
43                 // リサイズ
44                 if ($size[0] > $W || $size[1] > $H) {
45                         $key_w = $W / $size[0];
46                         $key_h = $H / $size[1];
47                         ($key_w < $key_h) ? $keys = $key_w : $keys = $key_h;
51 roytam 48  
52 roytam 49                         $out_w = $size[0] * $keys;
50                         $out_h = $size[1] * $keys;
51                 } else {
52                         $out_w = $size[0];
53                         $out_h = $size[1];
54                 }
55                 // 出力画像(サムネイル)のイメージを作成
56                 $im_out = ImageCreateTrueColor($out_w, $out_h);
57                 // 元画像を縦横とも コピーします。
58                 ImageCopyResampled($im_out, $im_in, 0, 0, 0, 0, $out_w, $out_h, $size[0], $size[1]);
51 roytam 59  
52 roytam 60                 // ここでエラーが出る方は下2行と置き換えてください。(GD2.0以下
61                 //$im_out = ImageCreate($out_w, $out_h);
62                 //ImageCopyResized($im_out, $im_in, 0, 0, 0, 0, $out_w, $out_h, $size[0], $size[1]);
51 roytam 63  
52 roytam 64                 // サムネイル画像をブラウザに出力、保存
65                 header('Content-Type: image/jpeg');
66                 ImageJPEG($im_out);
67                 ImageJPEG($im_out, $thumbout);
68                 // 作成したイメージを破棄
69                 ImageDestroy($im_out);
70                 ImageDestroy($im_in);
71                 exit;
72         } else {
73                 header("Location: $thumbout");
74                 exit;
75         }
51 roytam 76 }
52 roytam 77 // ディレクトリ一覧取得、ソート
51 roytam 78 $d = dir($img_dir);
79 while ($ent = $d->read()) {
52 roytam 80         if (eregi($ext, $ent)) {
81                 $files[] = $ent;
82         }
51 roytam 83 }
84 $d->close();
52 roytam 85 // ソート
51 roytam 86 @natsort($files);
87 $files2 = @array_reverse($files);
52 roytam 88 //ヘッダHTML
89 echo '<?xml version="1.0" encoding="utf-8"?>'."\n";
51 roytam 90 echo <<<HEAD
91 <!DOCTYPE html
52 roytam 92          PUBLIC "-//W3C//DTD XHTML 1.1//EN"
93          "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
94 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
51 roytam 95 <head>
52 roytam 96 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
51 roytam 97 <title>$title</title>
98 <link href="style.css" type="text/css" rel="stylesheet" media="all" />
99 </head>
100 <body>
101  
102 <h1>$title</h1>
52 roytam 103 <p>請勿在論壇外轉載此區任何資料。</p>
104 <center><script type="text/javascript"><!--//--><![CDATA[//><!--
105 google_ad_client = "pub-8016619041936615";
106 //728x90, 已建立 2007/12/26
107 google_ad_slot = "8811687463";
108 google_ad_width = 728;
109 google_ad_height = 90;
110 //--><!]]></script>
111 <script type="text/javascript"
112 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
113 </script></center>
51 roytam 114  
52 roytam 115 <h2>圖像一覧</h2>
116 <table summary="縮圖一覧">
51 roytam 117 <tr>
118  
119 HEAD;
120  
121 //print_r($files);
122 $maxs = count($files)-1;
123 $start = $_GET['start'];
124 $ends = $start+$page_def-1;
125 $counter = 0;
126 while (list($line, $filename) = @each($files2)) {
52 roytam 127         if (($line >= $start) && ($line <= $ends)) {
128                 $image = rawurlencode($filename);
129                 // サムネイルがある時はサムネイルへのリンク、それ以外はサムネイル表示、作成
130                 if (file_exists($thumb_dir.$image)) $piclink = $thumb_dir.$image;
131                 else $piclink = $_SERVER["PHP_SELF"]."?cmd=min&pic=".$image;
132                 $counter++;
133                 if (((($counter) % $cols) == 1)&&(($counter) != 1)) {
51 roytam 134         echo "</tr>\n<tr>\n";
52 roytam 135                 }//メインHTML
136                 echo <<<EOD
51 roytam 137 <td class="img"><a href="$img_dir$image"><img src="$piclink" alt="$filename" title="$filename" /><br />$filename</a></td>
138  
139 EOD;
52 roytam 140         }
51 roytam 141 }
142 echo "</tr>\n</table>\n";
143  
52 roytam 144 //ページリンク
145 echo '<p class="tline"><a href="'.$upphp.'?">戻る</a> Page:';
51 roytam 146 if ($_GET["start"] > 0) {
52 roytam 147         $prevstart = $_GET["start"] - $page_def;
148         echo " <a href=\"$_SERVER[PHP_SELF]?start=$prevstart\">&lt;&lt;前へ</a>";
51 roytam 149 }
150 if ($ends < $maxs) {
52 roytam 151         $nextstart = $ends+1;
152         echo " <a href=\"$_SERVER[PHP_SELF]?start=$nextstart\">次へ&gt;&gt;</a>";
51 roytam 153 }
154 echo '</p>';
155  
156 echo '
52 roytam 157 <center><script type="text/javascript"><!--//--><![CDATA[//><!--
158 google_ad_client = "pub-8016619041936615";
159 //468x60, 已建立 2007/12/17
160 google_ad_slot = "0207867936";
161 google_ad_width = 468;
162 google_ad_height = 60;
163 google_language = "zh-TW";
164 //--><!]]></script>
165 <script type="text/javascript"
166 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
167 </script></center>
51 roytam 168  
52 roytam 169 <h2>著作権表示</h2>
170 <p id="link"><a href="http://php.s3.to/">レッツPHP!</a> + <a href="http://utu.under.jp">Wastepaper Basket</a></p>
51 roytam 171  
172 </body>
173 </html>
174 ';
175 ?>