【问题标题】:get all the images from a folder in php从php中的文件夹中获取所有图像
【发布时间】:2013-06-11 21:55:20
【问题描述】:

我正在使用 WordPress。我有一个像mytheme/images/myimages 这样的图像文件夹。

我想检索文件夹myimages中的所有图像名称

请告诉我,我怎样才能获得图像名称。

【问题讨论】:

    标签: php image wordpress get


    【解决方案1】:

    试试这个

    $directory = "mytheme/images/myimages";
    $images = glob($directory . "/*.jpg");
    
    foreach($images as $image)
    {
      echo $image;
    }
    

    【讨论】:

    • 我的目录是这样的:$directory = "images[big]";,但它不起作用
    • @Md. Shariful Islam 有没有办法将目录与数据库中的 id 关联起来?
    • 我只添加使用目录路径中的最后一个反斜杠 /
    • 要获得多种类型,有一个有用的选项:$images = glob("$dir/*.{jpg,png,bmp}", GLOB_BRACE);
    【解决方案2】:

    您可以简单地使用 PHP opendir 函数。

    示例:

    $handle = opendir(dirname(realpath(__FILE__)).'/pictures/');
    while($file = readdir($handle)){
      if($file !== '.' && $file !== '..'){
        echo '<img src="pictures/'.$file.'" border="0" />';
      }
    }
    

    【讨论】:

      【解决方案3】:

      当您想从文件夹中获取所有图像时,请使用 glob() 内置函数来帮助获取所有图像。但是,当您获得所有信息时,有时需要检查所有信息是否有效,因此在这种情况下,此代码可以帮助您。此代码还将检查它是否是图像

        $all_files = glob("mytheme/images/myimages/*.*");
        for ($i=0; $i<count($all_files); $i++)
          {
            $image_name = $all_files[$i];
            $supported_format = array('gif','jpg','jpeg','png');
            $ext = strtolower(pathinfo($image_name, PATHINFO_EXTENSION));
            if (in_array($ext, $supported_format))
                {
                  echo '<img src="'.$image_name .'" alt="'.$image_name.'" />'."<br /><br />";
                } else {
                    continue;
                }
          }
      

      更多信息

      PHP Manual

      【讨论】:

      • 你应该改变这个:$i=1;$i=0; 并且它工作得很好!
      • @FlamurBeqiraj 已更新。谢谢
      【解决方案4】:
      $dir = "mytheme/images/myimages";
      $dh  = opendir($dir);
      while (false !== ($filename = readdir($dh))) {
          $files[] = $filename;
      }
      $images=preg_grep ('/\.jpg$/i', $files);
      

      非常快,因为您只扫描需要的目录。

      【讨论】:

      • 但是现在没有检查目录是否真的存在
      【解决方案5】:

      此答案特定于 WordPress

      $base_dir = trailingslashit( get_stylesheet_directory() );
      $base_url = trailingslashit( get_stylesheet_directory_uri() );
      
      $media_dir = $base_dir . 'yourfolder/images/';
      $media_url = $hase_url . 'yourfolder/images/';
      
      $image_paths = glob( $media_dir . '*.jpg' );
      $image_names = array();
      $image_urls = array();
      
      foreach ( $image_paths as $image ) {
          $image_names[] = str_replace( $media_dir, '', $image );
          $image_urls[] = str_replace( $media_dir, $media_url, $image );
      }
      
      // --- You now have:
      
      // $image_paths ... list of absolute file paths 
      // e.g. /path/to/wordpress/wp-content/uploads/yourfolder/images/sample.jpg
      
      // $image_urls ... list of absolute file URLs 
      // e.g. http://example.com/wp-content/uploads/yourfolder/images/sample.jpg
      
      // $image_names ... list of filenames only
      // e.g. sample.jpg
      

      这里有一些其他设置,可以为您提供来自其他地方的图像,而不是子主题。只需将上面代码中的前 2 行替换为您需要的版本即可:

      来自上传目录:

      // e.g. /path/to/wordpress/wp-content/uploads/yourfolder/images/sample.jpg
      $upload_path = wp_upload_dir();
      $base_dir = trailingslashit( $upload_path['basedir'] );
      $base_url = trailingslashit( $upload_path['baseurl'] );
      

      来自父主题

      // e.g. /path/to/wordpress/wp-content/themes/parent-theme/yourfolder/images/sample.jpg
      $base_dir = trailingslashit( get_template_directory() );
      $base_url = trailingslashit( get_template_directory_uri() );
      

      来自儿童主题

      // e.g. /path/to/wordpress/wp-content/themes/child-theme/yourfolder/images/sample.jpg
      $base_dir = trailingslashit( get_stylesheet_directory() );
      $base_url = trailingslashit( get_stylesheet_directory_uri() );
      

      【讨论】:

        【解决方案6】:

        这是我的一些代码

        $dir          = '/Images';
        $ImagesA = Get_ImagesToFolder($dir);
        print_r($ImagesA);
        
        function Get_ImagesToFolder($dir){
            $ImagesArray = [];
            $file_display = [ 'jpg', 'jpeg', 'png', 'gif' ];
        
            if (file_exists($dir) == false) {
                return ["Directory \'', $dir, '\' not found!"];
            } 
            else {
                $dir_contents = scandir($dir);
                foreach ($dir_contents as $file) {
                    $file_type = pathinfo($file, PATHINFO_EXTENSION);
                    if (in_array($file_type, $file_display) == true) {
                        $ImagesArray[] = $file;
                    }
                }
                return $ImagesArray;
            }
        }
        

        【讨论】:

          【解决方案7】:
          //path to the directory to search/scan
                  $directory = "";
                   //echo "$directory"
                  //get all files in a directory. If any specific extension needed just have to put the .extension
                  //$local = glob($directory . "*"); 
                  $local = glob("" . $directory . "{*.jpg,*.gif,*.png}", GLOB_BRACE);
                  //print each file name
                  echo "<ul>";
          
                  foreach($local as $item)
                  {
                  echo '<li><a href="'.$item.'">'.$item.'</a></li>';
                  }
          
                  echo "</ul>";
          

          【讨论】:

            【解决方案8】:

            检查是否存在,将所有文件放入数组中,preg grep 所有 JPG 文件,回显新数组对于所有图像都可以试试这个:

            $images=preg_grep('/\.(jpg|jpeg|png|gif)(?:[\?\#].*)?$/i', $files);
            
            
            if ($handle = opendir('/path/to/folder')) {
            
                while (false !== ($entry = readdir($handle))) {
                    $files[] = $entry;
                }
                $images=preg_grep('/\.jpg$/i', $files);
            
                foreach($images as $image)
                {
                echo $image;
                }
                closedir($handle);
            }
            

            【讨论】:

            • 您能否详细说明您的答案?
            • 检查是否存在,将所有文件放入数组中,preg grep 所有 JPG 文件,回显新数组 对于所有图像可以试试这个:'$images=preg_grep('/\.(jpg|jpeg|png |gif)(?:[\?\#].*)?$/i', $files);'
            • 请去掉开头的引号。
            • while (false !== ( 部分是什么意思?我在几个答案中看到了它,但这对我来说没有意义,为什么我们要循环一个错误的陈述?
            • @Studocwho readdir 来自 php.net 的函数警告:此函数可能返回布尔值 FALSE,但也可能返回计算结果为 FALSE 的非布尔值。请阅读有关布尔值的部分以获取更多信息。使用 === 运算符测试此函数的返回值。
            【解决方案9】:
                <?php
               $galleryDir = 'gallery/';
               foreach(glob("$galleryDir{*.jpg,*.gif,*.png,*.tif,*.jpeg}", GLOB_BRACE) as $photo)
               {echo "<a  href=\"$photo\">\n" ;echo "<img style=\"padding:7px\" class=\"uk-card uk-card-default uk-card-hover uk-card-body\" src=\"$photo\">"; echo "</a>";}?>
            

            UIkit php 文件夹库 https://webshelf.eu/en/php-folder-gallery/

            【讨论】:

            • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
            【解决方案10】:
            get all the images from a folder in php without database
            
            
            $url='https://demo.com/Images/sliderimages/';
                   $dir = "Images/sliderimages/";
                    $file_display = array(
                        'jpg',
                        'jpeg',
                        'png',
                        'gif'
                    );
                    
                    $data=array();
                    
                    if (file_exists($dir) == false) {
                        $rss[]=array('imagePathName' =>"Directory  '$dir'  not found!");
                        $msg=array('error'=>1,'images'=>$rss);
                         echo json_encode($msg);
                    } else {
                        $dir_contents = scandir($dir);
                    
                        foreach ($dir_contents as $file) {
                            @$file_type = strtolower(end(explode('.', $file)));
                            // $file_type1 = pathinfo($file);
                            // $file_type= $file_type1['extension'];
                            
                            if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) {
                               $data[]=array('imageName'=>$url.$file);
                           
                               
                            }
                        }
                        if(!empty($data)){
                            $msg=array('error'=>0,'images'=>$data);
                            echo json_encode($msg);
                        }else{
                            $rees[]=array('imagePathName' => 'No Image Found!');
                            $msg=array('error'=>2,'images'=>$rees);
                            echo json_encode($msg);
                        }
                    }
            

            【讨论】:

              【解决方案11】:

              您可以简单地显示您的实际图像目录(不太安全)。只需 2 行代码。

               $dir = base_url()."photos/";
              
              echo"<a href=".$dir.">Photo Directory</a>";
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-08-30
                • 2022-01-25
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多