2009-08-01 13 views

Odpowiedz

11

Oto podstawowa struktura przejeżdżające katalog i robić coś z plików graficznych (podany 'images' jest katalogiem w tym samym katalogu skryptu)

$image_types = array(
    'gif' => 'image/gif', 
    'png' => 'image/png', 
    'jpg' => 'image/jpeg', 
); 

foreach (scandir('images') as $entry) { 
    if (!is_dir($entry)) { 
     if (in_array(mime_content_type('images/'. $entry), $image_types)) { 
      // do something with image 
     } 
    } 
} 

Stamtąd można wysyłać obrazy bezpośrednio do przeglądarka, generuj znaczniki strony HTML lub twórz miniatury z GD functions i przechowuj je do wyświetlenia.

+0

Należy zauważyć, że to rozwiązanie używa przestarzałej funkcji 'mime_content_type', która wymaga modułów php mime_magic. Także, popraw mnie jeśli się mylę, ale pętla 'for' nie wydaje się być poprawna Php i myślę, że powinna być' foreach (scandir ('images') jako $ entry) '. –

+1

@emileb Poprawiono składnię pętli. – Imran

7

Myślę, że to może ci pomóc!

<? 
$string =array(); 
$filePath='directorypath/'; 
$dir = opendir($filePath); 
while ($file = readdir($dir)) { 
    if (eregi("\.png",$file) || eregi("\.jpg",$file) || eregi("\.gif",$file)) { 
    $string[] = $file; 
    } 
} 
while (sizeof($string) != 0){ 
    $img = array_pop($string); 
    echo "<img src='$filePath$img' width='100px'/>"; 
} 
?> 
2

eregi jest przestarzała teraz więc można użyć preg_match zamiast

<?php 
$string =array(); 
$filePath='directorypath/'; 
$dir = opendir($filePath); 
while ($file = readdir($dir)) { 
    if (preg_match("/.png/",$file) || preg_match("/.jpg/",$file) || preg_match("/.gif/",$file)) { 
    $string[] = $file; 
    } 
} 
while (sizeof($string) != 0){ 
    $img = array_pop($string); 
    echo "<img src='$filePath$img' >"; 
} 
?> 
1

Oto jedna wkładka na podstawie another answer z podobnym pytaniem:

// this will get you full path to images file. 
$data = glob("path/to/images/*.{jpg,gif,png,bmp}", GLOB_BRACE); 

// this will get you only the filenames 
$data= array_map('basename', $data); 

Początkowo chciałem użyć @Imran solution, ale mime_content_type nie był dostępny, a serwer (na którym mam zerową kontrolę) używa starych wersji Apache i PHP .

Więc zmieniłem go trochę do pracy z rozszerzeniem pliku, a ja go tutaj podaję.

$imgDir = "images_dir"; 

// make sure it's a directory 
if (file_exists($imgDir)) { 

    // select the extensions you want to take into account 
    $image_ext = array(
      'gif', 
      'png', 
      'jpg', 
      'jpeg' 
    ); 

    foreach (scandir($imgDir) as $entry) { 
     if (! is_dir($entry)) { // no need to weed out '.' and '..' 
      if (in_array(
        strtolower(pathinfo($entry, PATHINFO_EXTENSION)), 
        $image_ext)) { 

       // do something with the image file. 
      } 
     } 
    } 
} 

Kod jest testowany i działa.

Powiązane problemy