2012-09-27 3 views
0

이미지 디렉토리를 가져 와서 축소판을 만드는 다음 PHP 스크립트가 인터넷에서 발견되었습니다. 이 부분은 훌륭하게 작동합니다. 정렬 작업이 중단 된 것을 알았 으면합니다. 내가 파일 이름을 사용하고 있다는 것을 가장 잘 알 수 있습니다. 보안 카메라로 만든 이미지 디렉토리를 정렬 할 때 작성 날짜를 사용하고 싶습니다.PHP 축소판 스크립트의 결과 정렬

많은 PHP 경험이 없기 때문에 모든 입력과 약간의 (괜찮은, 많은) 방향이 좋을 것입니다.

도움을 다시 한번 감사드립니다!

<html><head><title>Snapshots</title></head> 
<body bgcolor='white'> 

<?php 
$folder = '.'; 
$dir = getcwd(); 
DirStat($folder, 0); 
chdir($dir); 
$FolderSize = ByteSize($FolderSize); 
$FileCount=$FileCount-2; 
?> 

<h2 align=center><?php echo date('m/d/Y H:i:s') ." - $FileCount Snapshots - $FolderSize";?></h4> 

<?php 

$imagens=''; 
$dn = opendir('.'); 
while (false !== ($file = readdir($dn))) { 
if ($file == '.' || $file =='..' || $file =='index.php' || $file =='Thumbs.db'){ 
     //print "<a href=$file>$file</a><br>"; 
}else{ 
     if (is_dir($file)){ 
       print "<img src='/imagens/diretorio.png'>&nbsp;<a href='$file?dir=dirname(__FILE__)'>$file</a><br>"; 
     }else{ 
       $tamanho = filesize($file); 
       $m = 'bytes'; // M�ltiplo 
       if ($tamanho>1024) { 
         $tamanho=round($tamanho/1024,2); 
         $m = 'KB'; 
       } elseif($tamanho > 1024*1024){ 
         $tamanho = round(($tamanho/1024)/1024,2); 
         $m = 'MB'; 
       } 

       $imagens .=OutputThumbnail($file, $tamanho, $m); 
     } 
} 
} 

closedir($dn); 

print '<br>'.$imagens; 

function OutputThumbnail($image_file, $tamanho, $m) 
{ 
     if (file_exists($image_file)) 
     { 
       $size = GetImageSize($image_file); 

       if ($size[0] <=64) { 
         $larg=$size[0]; 
       }elseif ($size[0] > 64 && $size[0] <= 200) { 
         $larg=64; 
       }elseif ($size[0] > 201 && $size[0] < 400) { 
         $larg=128; 
       }elseif ($size[0] > 401) { 
         $larg=256; 
       } 

       if ($size[0] == 0) $size[0]=1; 

       $alt= ($larg * $size[1])/$size[0]; 

       return "<a href=$image_file><img width=$larg height=$alt  src=$image_file border=0 
         TITLE='$image_file - $larg x $alt - $tamanho $m'></a>&nbsp;&nbsp;"; 
     } 
} 

?> 

<?php 
function DirStat($directory) { 
     global $FolderCount, $FileCount, $FolderSize; 

     chdir($directory); 
     $directory = getcwd(); 
     if($open = opendir($directory)) { 
       while($file = readdir($open)) { 
         if($file == '..' || $file == '.') continue; 
           if(is_file($file)) { 
             $FileCount++; 
             $FolderSize += filesize($file); 
           } elseif(is_dir($file)) { 
             $FolderCount++; 
           } 
       } 
       if($FolderCount > 0) { 
         $open2 = opendir($directory); 
         while($folders = readdir($open2)) { 
           $folder = $directory.'/'.$folders; 
           if($folders == '..' || $folders == '.') continue; 
             if(is_dir($folder)) { 
               DirStat($folder); 
             } 
           } 
           closedir($open2); 
         } 
         closedir($open); 
       } 
} 

function ByteSize($bytes) { 
     $size = $bytes/1024; 
     if($size < 1024){ 
       $size = number_format($size, 2); 
       $size .= 'KB'; 
     } else { 
       if($size/1024 < 1024) { 
         $size = number_format($size/1024, 2); 
         $size .= 'MB'; 
       } elseif($size/1024/1024 < 1024) { 
         $size = number_format($size/1024/1024, 2); 
         $size .= 'GB'; 
       } else { 
         $size = number_format($size/1024/1024/1024,2); 
         $size .= 'TB'; 
       } 
     } 
     return $size; 
} 

?> 

답변

1

나는 아주 더러운 정렬 방법을 (비효율적으로) 추가했습니다. 내림차순 또는 오름차순 정렬 코드에서 SORT_DESC 또는 SORT_ASC 줄 아래로 변경하십시오. 추가 정렬 기능을

arraySortByColumn($exifData, 'time', SORT_DESC); 

스크립트 :

<html><head><title>Snapshots</title></head> 
<body bgcolor='white'> 

<?php 
$folder = '.'; 
$dir = getcwd(); 
DirStat($folder, 0); 
chdir($dir); 
$FolderSize = ByteSize($FolderSize); 
$FileCount=$FileCount-2; 
?> 

<h2 align=center><?php echo date('m/d/Y H:i:s') ." - $FileCount Snapshots - $FolderSize";?></h4> 

<?php 

$imagens=''; 
$exifData = array(); 
$dn = opendir('.'); 
while (false !== ($file = readdir($dn))) { 
if ($file == '.' || $file =='..' || $file =='index.php' || $file =='Thumbs.db'){ 
     //print "<a href=$file>$file</a><br>"; 
}else{ 
     if (is_dir($file)){ 
       print "<img src='/imagens/diretorio.png'>&nbsp;<a href='$file?dir=dirname(__FILE__)'>$file</a><br>"; 
     }else{ 
       $tamanho = filesize($file); 
       $datetime = @exif_read_data($file); 
       $m = 'bytes'; // 
       if ($tamanho>1024) { 
         $tamanho=round($tamanho/1024,2); 
         $m = 'KB'; 
       } elseif($tamanho > 1024*1024){ 
         $tamanho = round(($tamanho/1024)/1024,2); 
         $m = 'MB'; 
       } 
       $exifData[] = array('time' => $datetime['FileDateTime'], 'file' => $file, 'tamanho' => $tamanho, 'm' => $m); 

     } 
} 
} 

closedir($dn); 
//change to SORT_DESC or SORT_ASC 
arraySortByColumn($exifData, 'time', SORT_DESC); 

foreach ($exifData as $value) { 
    $imagens .= OutputThumbnail($value['file'], $value['tamanho'], $value['m']); 
} 

print '<br>'.$imagens; 

function arraySortByColumn(&$arr, $col, $dir = SORT_DESC) { 
     $sort_col = array(); 
     foreach ($arr as $key => $row) { 
      $sort_col[$key] = $row[$col]; 
     } 
     array_multisort($sort_col, $dir, $arr); 
    } 

function OutputThumbnail($image_file, $tamanho, $m) 
{ 
     if (file_exists($image_file)) 
     { 
       $size = GetImageSize($image_file); 

       if ($size[0] <=64) { 
         $larg=$size[0]; 
       }elseif ($size[0] > 64 && $size[0] <= 200) { 
         $larg=64; 
       }elseif ($size[0] > 201 && $size[0] < 400) { 
         $larg=128; 
       }elseif ($size[0] > 401) { 
         $larg=256; 
       } 

       if ($size[0] == 0) $size[0]=1; 

       $alt= ($larg * $size[1])/$size[0]; 

       return "<a href=$image_file><img width=$larg height=$alt  src=$image_file border=0 
         TITLE='$image_file - $larg x $alt - $tamanho $m'></a>&nbsp;&nbsp;"; 
     } 
} 

?> 

<?php 
function DirStat($directory) { 
     global $FolderCount, $FileCount, $FolderSize; 

     chdir($directory); 
     $directory = getcwd(); 
     if($open = opendir($directory)) { 
       while($file = readdir($open)) { 
         if($file == '..' || $file == '.') continue; 
           if(is_file($file)) { 
             $FileCount++; 
             $FolderSize += filesize($file); 
           } elseif(is_dir($file)) { 
             $FolderCount++; 
           } 
       } 
       if($FolderCount > 0) { 
         $open2 = opendir($directory); 
         while($folders = readdir($open2)) { 
           $folder = $directory.'/'.$folders; 
           if($folders == '..' || $folders == '.') continue; 
             if(is_dir($folder)) { 
               DirStat($folder); 
             } 
           } 
           closedir($open2); 
         } 
         closedir($open); 
       } 
} 

function ByteSize($bytes) { 
     $size = $bytes/1024; 
     if($size < 1024){ 
       $size = number_format($size, 2); 
       $size .= 'KB'; 
     } else { 
       if($size/1024 < 1024) { 
         $size = number_format($size/1024, 2); 
         $size .= 'MB'; 
       } elseif($size/1024/1024 < 1024) { 
         $size = number_format($size/1024/1024, 2); 
         $size .= 'GB'; 
       } else { 
         $size = number_format($size/1024/1024/1024,2); 
         $size .= 'TB'; 
       } 
     } 
     return $size; 
} 

?> 
+0

것을 한 것으로! 도와 주셔서 감사합니다. – user1704228