|
日時: 2009/07/12 14:45
名前: lightbox
|
拡張子:
<?
// *********************************************************
// 共通部分
// *********************************************************
//require_once( 'lg_common.php' );
header( "Content-Type: text/html; Charset=shift_jis" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
// 以下IE用
header( "P3P: CP=\"CAO PSA OUR\"" );
foreach( $_GET as $Key => $Value ) {
$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
$_POST[$Key] = str_replace("\\\\", "\\", $Value );
$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}
foreach( $_COOKIE as $Key => $Value ) {
$_COOKIE[$Key] = str_replace("\\\\", "\\", $Value );
$_COOKIE[$Key] = str_replace("\\'", "'", $_COOKIE[$Key] );
$_COOKIE[$Key] = str_replace("\\\"", "\"", $_COOKIE[$Key] );
}
if ( $_POST['p'] == '' ) {
$_POST['p'] = 1;
}
// *********************************************************
// 変数
// *********************************************************
// 対象となるディレクトリ
$upload_dir = '.';
// 一行の列数
$cols = 8;
// サムネイルが無い場合に作成する最大数
$creates = 20;
// 行数
$rowmax = 5;
// テーブルタグを含むファイル名リストの文字列
$upload_list = '';
$scnt = 0;
$rowcnt = 0;
$pagecnt = 1;
$pagefmt = "";
$file_cnt = 0;
$txt_style = 'cursor:pointer;width:100px;overflow:hidden';
////////////////////////////////////////////////////////////
// 常に実行するファイル一覧の取得
////////////////////////////////////////////////////////////
$DirHandle = @opendir($upload_dir);
if ( $DirHandle ) {
if ( $_POST['p'] != $pagecnt ) {
$wk = $_POST['p']-1;
$pagefmt = " <a href=\"{$_SERVER['PHP_SELF']}?p=$wk\"><</a> <a href=\"{$_SERVER['PHP_SELF']}?p=$pagecnt\">$pagecnt</a>";
}
else {
$pagefmt = " $pagecnt";
}
$page_list .= " $pagefmt";
// ループ処理
while( 1 ) {
if ( $_POST['p'] != $pagecnt ) {
while( 1 ) {
$rows = ReadRow( $DirHandle, $cols );
if ( count( $rows ) == 0 ) {
$pagecnt++;
if ( $_POST['p'] != $pagecnt ) {
$pagefmt = " <a href=\"{$_SERVER['PHP_SELF']}?p=$pagecnt\">$pagecnt</a>";
}
else {
$pagefmt = " $pagecnt";
}
$page_list .= " $pagefmt";
break;
}
$rowcnt++;
if ( $rowcnt > $rowmax ) {
$pagecnt++;
if ( $_POST['p'] != $pagecnt ) {
$pagefmt = " <a href=\"{$_SERVER['PHP_SELF']}?p=$pagecnt\">$pagecnt</a>";
}
else {
$pagefmt = " $pagecnt";
}
$page_list .= " $pagefmt";
$rowcnt = 1;
}
if ( $_POST['p'] == $pagecnt ) {
$rowcnt = 0;
break;
}
$file_cnt += count($rows);
}
}
else {
$rows = ReadRow( $DirHandle, $cols );
}
// 配列が空の場合はデータが全く存在しないので、
// 何もしないですぐ終わる
if ( count( $rows ) == 0 ) {
$rowcnt = 0;
break;
}
$rowcnt++;
$file_cnt += count($rows);
if ( $rowcnt > $rowmax ) {
break;
}
$upload_list .= "<tr>\n";
for( $i = 0; $i < $cols; $i++ ) {
$upload_list .= "<td valign=top>";
if ( $rows[$i] != '' ) {
$upload_list .= "<a href=\"$upload_dir/{$rows[$i]}\"";
// サムネイルが無い場合、$creates の値まで作成
$fname = explode( ".", $rows[$i] );
$chk = file_exists( "$upload_dir/s/{$fname[0]}.jpg" );
if ( !$chk ) {
$aExt = explode( ".", $rows[$i] );
if ( strtoupper( $aExt[1] ) == 'JPG' ||
strtoupper( $aExt[1] ) == 'JPEG' ) {
$scnt++;
if ( $scnt <= $creates ) {
$ret = ImageConvert( $upload_dir, $rows[$i], 0 );
}
}
if ( strtoupper( $aExt[1] ) == 'PNG' ) {
$scnt++;
if ( $scnt <= $creates ) {
$ret = ImageConvert( $upload_dir, $rows[$i], 1 );
}
}
}
if ( $ret === false ) {
$scnt--;
$upload_list .= " target=\"_blank\"><div style='$txt_style'>{$rows[$i]}</div></a>";
$ret = true;
}
else {
// サムネイルがある場合は、IMG を埋め込む
if ( $chk ) {
$upload_list .= " target=\"_blank\">";
$style = "style='border:1 #000000 solid'";
$upload_list .= "<img $style src=\"$upload_dir/s/{$fname[0]}.jpg\">";
$upload_list .= "</a>";
}
else {
$upload_list .= " target=\"_blank\"><div style='$txt_style'>{$rows[$i]}</div></a>";
}
}
}
$upload_list .= "</td>\n";
}
$upload_list .= "</tr>\n";
}
if ( $rowcnt > $rowmax ) {
$rowcnt = 1;
while( 1 ) {
$rows = ReadRow( $DirHandle, $cols );
if ( count( $rows ) == 0 ) {
$pagecnt++;
if ( $_POST['p'] != $pagecnt ) {
$wk = $_POST['p']+1;
$pagefmt = " <a href=\"{$_SERVER['PHP_SELF']}?p=$pagecnt\">$pagecnt</a> <a href=\"{$_SERVER['PHP_SELF']}?p=$wk\">></a>";
}
else {
$pagefmt = " $pagecnt";
}
$page_list .= " $pagefmt";
break;
}
$rowcnt++;
$file_cnt += count($rows);
if ( $rowcnt > $rowmax ) {
$pagecnt++;
if ( $_POST['p'] != $pagecnt ) {
$pagefmt = " <a href=\"{$_SERVER['PHP_SELF']}?p=$pagecnt\">$pagecnt</a>";
}
else {
$pagefmt = " $pagecnt";
}
$page_list .= " $pagefmt";
$rowcnt = 1;
}
}
}
}
// *********************************************************
// 一行のデータを読んで、配列にデータをセットする
// ( 戻り値の配列数が 0 の場合、データは存在しない )
// $cols で、1行の列数を決定する
// *********************************************************
function ReadRow( $handle, $cols ) {
$ret = array();
while( 1 ) {
$Target = readdir( $handle );
// データが完全な終了
if ( $Target === false ) {
break;
}
// 対象外は読み飛ばし
if ( $Target == '.' || $Target == '..' ) {
continue;
}
if ( is_dir($Target) ) {
continue;
}
$aExt = explode( ".", $Target );
if ( count( $aExt ) == 2 ) {
if ( strtoupper( $aExt[1] ) == 'JPG' ||
strtoupper( $aExt[1] ) == 'JPEG' ) {
$ret[] = $Target;
}
if ( strtoupper( $aExt[1] ) == 'PNG' ) {
$ret[] = $Target;
}
}
// 指定回数配列がセットされたらループを終了する
if ( count( $ret ) == $cols ) {
break;
}
}
return $ret;
}
# **********************************************************
# アップロードされたファイルを縮小して保存
# **********************************************************
function ImageConvert( $dir, $filename, $type ) {
global $err_message;
# ファイルの属性等を取得
$target = getimagesize( "$dir/$filename" );
# 現在のサイズ
$width = $target[0];
$height = $target[1];
$width_new = 100; // 幅固定
$height_new = (int)( ($height/$width)*$width_new );
# 元のファイルのハンドル
if ( $type == 0 ) {
$jpeg = @imagecreatefromjpeg ( "$dir/$filename" );
}
if ( $type == 1 ) {
$jpeg = @imagecreatefrompng ( "$dir/$filename" );
}
if ( $jpeg === false ) {
return false;
}
# 新しいイメージ
$jpeg_new = @imagecreatetruecolor( $width_new, $height_new );
if ( $jpeg_new === false ) {
return false;
}
# サイズ変更して新しいイメージへ転送
$ret = @imagecopyresampled(
$jpeg_new,
$jpeg,
0,
0,
0,
0,
$width_new,
$height_new,
$width,
$height
);
if ( !$ret ) {
$err_message = "サイズ変更に失敗しました";
return false;
}
# JPEG ファイルとして、クオリティ 75 で出力
$fname = explode( ".", $filename );
$ret = @imagejpeg ( $jpeg_new, "$dir/s/{$fname[0]}.jpg", 75 );
if ( !$ret ) {
$err_message = "ファイル作成に失敗しました";
return false;
}
return true;
}
// *********************************************************
// 画面
// *********************************************************
//require_once( 'lg_view.php' );
?>
<html>
<head>
<title>lightbox gallery</title>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
</head>
<body>
<?= $page_list ?> ( ファイル数 : <?= $file_cnt ?> )
<table>
<?= $upload_list ?>
</table>
</body>
</html>
|