Как получить картинки из папки одну за другой и отобразить на странице с помощью PHP - PullRequest
6 голосов
/ 01 августа 2009

Как получить изображения из папки и отобразить их на странице, могу ли я изменить его размер в самом php или мне нужно изменить его размер и загрузить отдельно, чтобы отобразить его в виде миниатюр?

Ответы [ 5 ]

11 голосов
/ 01 августа 2009

Вот базовая структура для обхода каталога и выполнения каких-либо действий с файлами изображений (учитывая, что 'images' - это каталог в том же каталоге вашего сценария)

$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
        }
    }
}

Отсюда вы можете отправлять изображения непосредственно в браузер, создавать теги для HTML-страницы или создавать миниатюры с функциями GD и сохранять их для отображения.

7 голосов
/ 01 августа 2009

Я думаю, что это может помочь вам!

<?
$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 голосов
/ 12 июля 2013

eregi устарела, поэтому вы можете использовать preg_match вместо

<?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 голос
/ 12 марта 2015

Вот одна строка, основанная на другой ответ на похожий вопрос:

// 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);

Изначально я хотел использовать решение @ Imran , но mime_content_type было недоступно, и сервер (на котором у меня нулевой контроль) использует старые версии Apache и Php.

Так что я немного изменил его для работы с расширением файла, и я даю его здесь.

$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.
            }
        }
    }
}

Код протестирован и работает.

1 голос
/ 01 августа 2009

Посмотрите на:

Чтобы изменить размер изображения непосредственно из PHP:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...