머리가 좀 아파서
쉴겸 해서 만들어봤습니다.
썸네일 기능은 넣지 않앗습니다.
충분히 응용가능하리라고 봅니다.
사용방식은 크게 두가지 입니다.
list.txt를 참조하는 방식과
그냥 디렉토리를 읽어서 하는 방식입니다.
이하 소스입니다.
$Ypattern_extension = 'gif|jpg|jpeg|png';//확인할 이미지 지정
$Ydir_path_img = './imgviewer/';//확인할 이미지 디렉토리 경로, 절대경로 or 상대경로, 맨마지막에 / 반듯이 붙일것
$Yfile_name_listing = '';//해당파일이 이미지 경로에 존재하면 그것을 참조로 리스팅, ex)list.txt
$Ycheck_file = 0;//파일의 존재유무를 체크 할것인가?, 체크할경우 1, 체크하지 않을 경우 0
$Yimg_width = 200;//이미지 넓이
$Ynum_line = 4;//한라인에 보여줄 이미지 개수
$Ynum_page = 12;//한페이지에 보여줄 개수 설정
$Ynum_pageblock = 10;//한페이지에 보여줄 페이지블럭수 설정
if (!is_dir($Ydir_path_img)) {
echo "지정한 디렉토리가 존재하지 않습니다.";
exit;
}
if (empty($page)) $page = 1;
$start_line = ($page - 1) *10;
$total = 0;
$view_array = Array();
//참조 파일이 존재하면 참조파일을 참조함
if (!empty($Yfile_name_listing) && is_file($Ydir_path_img . $Yfile_name_listing)) {
$list = file($Ydir_path_img . $Yfile_name_listing);
if (is_array($list)){
foreach($list as $value){
$value = trim($value);
//해당 라인이 비었으면 넘어감
if (empty($value)) continue;
//해당 라인이 #으로 시작하면 주석으로 간주하고 넘어감
if (preg_match("`^#`", $value)) continue;
$temp = explode('|', $value);
if (count($temp) > 1) {
$temp[0] = trim($temp[0]);//파일명
if ($Ycheck_file == 1) {
if (is_file($Ydir_path_img . $temp[0])) {
if ($total >= $start_line && $total < $start_line + $Ynum_page) {
$view_array[] = $temp;
}
$total++;
}
}
else {
if ($total >= $start_line && $total < $start_line + $Ynum_page) {
$view_array[] = $temp;
}
$total++;
}
}
}
}
}
else{//참조된 파일이 없으므로 지정된 디렉토리에서 직접 찾는 형태
$all_array = Array();
$d = dir($Ydir_path_img);
while (false !== ($entry = $d->read())) {
if (is_file($Ydir_path_img . $entry) && preg_match("`\." . $Ypattern_extension . "$`i", $entry)) {
$mtime = filemtime($Ydir_path_img . $entry);
$all_array[$mtime] = $entry;
}
else{
continue;
}
}
$d->close();
if (is_array($all_array)){
krsort($all_array);
reset ($all_array);
$i = 0;
foreach($all_array as $temp){
if ($total >= $start_line && $total < $start_line + $Ynum_page) {
$view_array[$i][0] = $temp;
$view_array[$i][1] = $temp;
$i++;
}
$total++;
}
}
}
?>
<table width=900 align="center">
<?php
if (count($view_array) == 0) {
echo "<tr><td height=50>등록된 이미지 없습니다.<td></tr>\n";
}
else{
$cnt = 0;
for ($i = 0; $i < ceil($Ynum_page / $Ynum_line); $i++){
for($j = 0; $j < $Ynum_line; $j ++){
if (empty($view_array[$cnt][0])){
$temp_image = 'no image';
$temp_title = '';
}
else {
$temp_title = $view_array[$cnt][1];
if (!is_file($Ydir_path_img . $view_array[$cnt][0])){
$temp_image = 'not find image';
}
else{
$temp_image = "<img src='" . $Ydir_path_img . $view_array[$cnt][0] . "' width=" . $Yimg_width . ">";
}
}
if ($j == 0) echo "<tr>";
echo "<td width=" . (100 / $Ynum_line) . "% valign=top><table width=" . $Yimg_width . " align=center><tr><td align=center valign=middle>" . $temp_image . "</td></tr><tr><td>" . $temp_title . "</td></tr></table><td>\n";
if ($j == $Ynum_line - 1) echo "</tr>";
$cnt++;
}
}
}
?>
</table>
<br>
<table width=900 align="center">
<tr>
<td>
<?php
//그냥 그누보드꺼 사용
// 현재페이지, 총페이지수, 한페이지에 보여줄 행, URL
function get_paging($write_pages, $cur_page, $total_page, $url, $add="")
{
$str = "";
if ($cur_page > 1) {
$str .= "<a href='" . $url . "1{$add}'>처음</a>";
//$str .= "[<a href='" . $url . ($cur_page-1) . "'>이전</a>]";
}
$start_page = ( ( (int)( ($cur_page - 1 ) / $write_pages ) ) * $write_pages ) + 1;
$end_page = $start_page + $write_pages - 1;
if ($end_page >= $total_page) $end_page = $total_page;
if ($start_page > 1) $str .= " <a href='" . $url . ($start_page-1) . "{$add}'>이전</a>";
if ($total_page > 1) {
for ($k=$start_page;$k<=$end_page;$k++) {
if ($cur_page != $k)
$str .= " <a href='$url$k{$add}'><span>$k</span></a>";
else
$str .= " <b>$k</b> ";
}
}
if ($total_page > $end_page) $str .= " <a href='" . $url . ($end_page+1) . "{$add}'>다음</a>";
if ($cur_page < $total_page) {
//$str .= "[<a href='$url" . ($cur_page+1) . "'>다음</a>]";
$str .= " <a href='$url$total_page{$add}'>맨끝</a>";
}
$str .= "";
return $str;
}
if (empty($total)) $total = 1;
$total_page = ceil($total / $Ynum_pageblock);
echo get_paging($Ynum_pageblock, $page, $total_page, 'Yimg_viewer.php?page=');
?>
</td>
</tr>
</table><div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>
쉴겸 해서 만들어봤습니다.
썸네일 기능은 넣지 않앗습니다.
충분히 응용가능하리라고 봅니다.
사용방식은 크게 두가지 입니다.
list.txt를 참조하는 방식과
그냥 디렉토리를 읽어서 하는 방식입니다.
이하 소스입니다.
$Ypattern_extension = 'gif|jpg|jpeg|png';//확인할 이미지 지정
$Ydir_path_img = './imgviewer/';//확인할 이미지 디렉토리 경로, 절대경로 or 상대경로, 맨마지막에 / 반듯이 붙일것
$Yfile_name_listing = '';//해당파일이 이미지 경로에 존재하면 그것을 참조로 리스팅, ex)list.txt
$Ycheck_file = 0;//파일의 존재유무를 체크 할것인가?, 체크할경우 1, 체크하지 않을 경우 0
$Yimg_width = 200;//이미지 넓이
$Ynum_line = 4;//한라인에 보여줄 이미지 개수
$Ynum_page = 12;//한페이지에 보여줄 개수 설정
$Ynum_pageblock = 10;//한페이지에 보여줄 페이지블럭수 설정
if (!is_dir($Ydir_path_img)) {
echo "지정한 디렉토리가 존재하지 않습니다.";
exit;
}
if (empty($page)) $page = 1;
$start_line = ($page - 1) *10;
$total = 0;
$view_array = Array();
//참조 파일이 존재하면 참조파일을 참조함
if (!empty($Yfile_name_listing) && is_file($Ydir_path_img . $Yfile_name_listing)) {
$list = file($Ydir_path_img . $Yfile_name_listing);
if (is_array($list)){
foreach($list as $value){
$value = trim($value);
//해당 라인이 비었으면 넘어감
if (empty($value)) continue;
//해당 라인이 #으로 시작하면 주석으로 간주하고 넘어감
if (preg_match("`^#`", $value)) continue;
$temp = explode('|', $value);
if (count($temp) > 1) {
$temp[0] = trim($temp[0]);//파일명
if ($Ycheck_file == 1) {
if (is_file($Ydir_path_img . $temp[0])) {
if ($total >= $start_line && $total < $start_line + $Ynum_page) {
$view_array[] = $temp;
}
$total++;
}
}
else {
if ($total >= $start_line && $total < $start_line + $Ynum_page) {
$view_array[] = $temp;
}
$total++;
}
}
}
}
}
else{//참조된 파일이 없으므로 지정된 디렉토리에서 직접 찾는 형태
$all_array = Array();
$d = dir($Ydir_path_img);
while (false !== ($entry = $d->read())) {
if (is_file($Ydir_path_img . $entry) && preg_match("`\." . $Ypattern_extension . "$`i", $entry)) {
$mtime = filemtime($Ydir_path_img . $entry);
$all_array[$mtime] = $entry;
}
else{
continue;
}
}
$d->close();
if (is_array($all_array)){
krsort($all_array);
reset ($all_array);
$i = 0;
foreach($all_array as $temp){
if ($total >= $start_line && $total < $start_line + $Ynum_page) {
$view_array[$i][0] = $temp;
$view_array[$i][1] = $temp;
$i++;
}
$total++;
}
}
}
?>
<table width=900 align="center">
<?php
if (count($view_array) == 0) {
echo "<tr><td height=50>등록된 이미지 없습니다.<td></tr>\n";
}
else{
$cnt = 0;
for ($i = 0; $i < ceil($Ynum_page / $Ynum_line); $i++){
for($j = 0; $j < $Ynum_line; $j ++){
if (empty($view_array[$cnt][0])){
$temp_image = 'no image';
$temp_title = '';
}
else {
$temp_title = $view_array[$cnt][1];
if (!is_file($Ydir_path_img . $view_array[$cnt][0])){
$temp_image = 'not find image';
}
else{
$temp_image = "<img src='" . $Ydir_path_img . $view_array[$cnt][0] . "' width=" . $Yimg_width . ">";
}
}
if ($j == 0) echo "<tr>";
echo "<td width=" . (100 / $Ynum_line) . "% valign=top><table width=" . $Yimg_width . " align=center><tr><td align=center valign=middle>" . $temp_image . "</td></tr><tr><td>" . $temp_title . "</td></tr></table><td>\n";
if ($j == $Ynum_line - 1) echo "</tr>";
$cnt++;
}
}
}
?>
</table>
<br>
<table width=900 align="center">
<tr>
<td>
<?php
//그냥 그누보드꺼 사용
// 현재페이지, 총페이지수, 한페이지에 보여줄 행, URL
function get_paging($write_pages, $cur_page, $total_page, $url, $add="")
{
$str = "";
if ($cur_page > 1) {
$str .= "<a href='" . $url . "1{$add}'>처음</a>";
//$str .= "[<a href='" . $url . ($cur_page-1) . "'>이전</a>]";
}
$start_page = ( ( (int)( ($cur_page - 1 ) / $write_pages ) ) * $write_pages ) + 1;
$end_page = $start_page + $write_pages - 1;
if ($end_page >= $total_page) $end_page = $total_page;
if ($start_page > 1) $str .= " <a href='" . $url . ($start_page-1) . "{$add}'>이전</a>";
if ($total_page > 1) {
for ($k=$start_page;$k<=$end_page;$k++) {
if ($cur_page != $k)
$str .= " <a href='$url$k{$add}'><span>$k</span></a>";
else
$str .= " <b>$k</b> ";
}
}
if ($total_page > $end_page) $str .= " <a href='" . $url . ($end_page+1) . "{$add}'>다음</a>";
if ($cur_page < $total_page) {
//$str .= "[<a href='$url" . ($cur_page+1) . "'>다음</a>]";
$str .= " <a href='$url$total_page{$add}'>맨끝</a>";
}
$str .= "";
return $str;
}
if (empty($total)) $total = 1;
$total_page = ceil($total / $Ynum_pageblock);
echo get_paging($Ynum_pageblock, $page, $total_page, 'Yimg_viewer.php?page=');
?>
</td>
</tr>
</table><div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>
댓글 18개
아래 디렉토리 리스팅과 사이즈 체킹을 조금 응용해서 비슷하게 흉내내봤씁니다..
function get_dirsizea($file_dir) {
$size = 0;
$Ypattern_extension = 'gif|jpg|jpeg|png';//확인할 이미지 지정
$d = dir($file_dir);
while ($entry = $d->read()) {
if ($entry != "." && $entry != "..") {
$size += filesize("$file_dir/$entry");
$temp_filename = explode('.', $entry);
if((preg_match("/($Ypattern_extension)/", $temp_filename[1]))) {
echo "<img src=\"$file_dir/$entry\"><br>";
}
}
}
$d->close();
return $size;
}
function get_dirsizea($file_dir) {
$size = 0;
$Ypattern_extension = 'gif|jpg|jpeg|png';//확인할 이미지 지정
$d = dir($file_dir);
while ($entry = $d->read()) {
if ($entry != "." && $entry != "..") {
$size += filesize("$file_dir/$entry");
$temp_filename = explode('.', $entry);
if((preg_match("/($Ypattern_extension)/", $temp_filename[1]))) {
echo "<img src=\"$file_dir/$entry\"><br>";
}
}
}
$d->close();
return $size;
}
게시글 목록
| 번호 | 제목 |
|---|---|
| 10705 |
Linux
LINUX 해킹당했을 때 대처요령
2
|
| 10698 | |
| 10697 |
Flash
웹문서에 페이지 로딩중 효과 | SCRIPT
|
| 10693 |
JavaScript
플래쉬에서팝업창띄우기
3
|
| 10687 |
Flash
플래쉬 팁 여러가지
5
|
| 10683 | |
| 10681 | |
| 10680 | |
| 10677 | |
| 10671 | |
| 10670 |
JavaScript
smtp로 메일보내기(102번 게시물과는 다른 방법)
|
| 10666 | |
| 10664 |
JavaScript
아이프레임 자동으로 늘어나는 자바 스크립트.
1
|
| 10658 | |
| 10656 | |
| 10653 | |
| 10652 | |
| 10651 | |
| 10650 | |
| 10649 | |
| 10648 | |
| 10646 | |
| 10645 |
Linux
리눅스 CD로 망가진 파일복구하기
|
| 10642 |
MySQL
25가지 sql 작성법
2
|
| 28809 |
HTML
union top n 가져오기
1
|
| 10641 | |
| 10638 |
JavaScript
이미지 테두리 없애기 스타일 시트
2
|
| 10637 | |
| 10636 |
JavaScript
window.open property | +JavaScript
|
| 10635 | |
| 28808 | |
| 10634 |
JavaScript
이메일 selectbox | +JavaScript
|
| 10632 |
JavaScript
[Javascript] 끊기지 않는 배너 롤링
1
|
| 28807 |
HTML
[자바스크립트] 오늘 날짜 함수
|
| 28806 |
HTML
[자바스크립트] 라디오 버튼 비활성
|
| 10631 |
JavaScript
[Javascript] id값 변수명으로 치환
|
| 10630 | |
| 10629 |
기타
무단링크 금지 스크립트
|
| 28805 | |
| 10627 |
JavaScript
상태바의 링크 주소 감추기
1
|
| 10626 | |
| 10625 | |
| 28804 | |
| 28803 |
HTML
프레임 소스보기 막기
|
| 10624 | |
| 10623 | |
| 28802 | |
| 10622 | |
| 10620 | |
| 10619 | |
| 10618 | |
| 10616 | |
| 10615 | |
| 10613 | |
| 10611 |
MySQL
서버 상태 값 주기적으로 메일로 발송하기
1
|
| 28799 | |
| 10610 |
JavaScript
이미지도용막기
|
| 10608 | |
| 28798 |
HTML
유용한 PHP성능 개선을 위한 팁
|
| 10604 |
JavaScript
작업창이 상단메뉴바까지 올라가서 옮길수 없을때..
3
|
| 28794 |
HTML
포토샵 화면이 좁을경우..
3
|
| 10602 | |
| 10600 | |
| 28793 | |
| 10596 | |
| 10595 |
JavaScript
리눅스 SendMail 속도 UP
|
| 10593 |
기타
폼 검증용 함수
1
|
| 28792 | |
| 28791 | |
| 28790 |
HTML
콤보박스 출력용 함수
|
| 10592 |
JavaScript
특정 확장자의 아이콘을 링크 테그형태로 만들어 주는 함수
|
| 28789 |
HTML
파일업로드 클래스~~
|
| 28787 |
HTML
날짜비교 함수
1
|
| 10591 |
JavaScript
자주사용하는 자바스크립트를 클래스로 묶어봤습니다.
|
| 10590 | |
| 10589 |
JavaScript
nylon 을 이용해 리눅스에서 sock4/5 운영하기
|
| 28785 | |
| 10588 |
JavaScript
Ajax강의- 두번째 강의의 pdf(프리젠테이션) 41-49
|
| 10587 | |
| 28783 |
HTML
테이블안에 있는 글 자동 정렬하기
1
|
| 10586 | |
| 28782 | |
| 10585 |
JavaScript
Ajax강의- 첫번째 강의의 pdf중 발표문건 51-60
|
| 10574 | |
| 10571 |
JavaScript
자신의 별자리
2
|
| 10570 |
JavaScript
Ajax강의- 첫번째 강의의 pdf중 발표문건 41-50
|
| 28778 | |
| 10568 | |
| 10567 | |
| 28777 | |
| 10564 |
기타
레이어안에 달력
2
|
| 10562 | |
| 10561 |
기타
채널모드로 윈도우 열기
|
| 28776 |
HTML
전체화면으로 페이지 열기
|
| 10559 |
JavaScript
여러가지 방법으로 창닫기
1
|
| 10558 | |
| 28775 | |
| 28774 | |
| 10557 |
JavaScript
가짜 카운터 달기
|
| 10556 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기