【问题标题】:How to select image sized between 100-500 kb?如何选择大小在 100-500 kb 之间的图像?
【发布时间】:2021-01-11 17:40:54
【问题描述】:

我有一个简短的 PHP 代码来帮助我显示来自特定文件夹的随机图像。但现在它似乎可以选择任何尺寸的任何图像。我希望那些选定的图像在 100-500 kb 之间。如果小于 100 kb 或大于 500 kb,该功能将不会选择并显示它。 你能告诉我如何修改这段代码吗?可能需要添加一些功能。

<?php $randomdir = dir('images/random');
$count = 1;
$pattern="/(gif|jpg|jpeg|png)/";
while($file = $randomdir->read()) {
    $ext = pathinfo($file, PATHINFO_EXTENSION);
    if (preg_match($pattern, $ext)) {
        $imagearray[$count] = $file;
        $count++;
    }
}
$random = mt_rand(1, $count - 1); 
echo '<img src="images/random/'.$imagearray[$random].'" alt />';
?>

【问题讨论】:

    标签: php


    【解决方案1】:

    试试这个 我们要设置2个条件

    $min =  100; //KB
    $max = 500; //KB
    
    if($_FILES['myfile']['size'] < $min * 1024 || $_FILES['myfile']['size'] > $max * 1024){
     echo 'error';
    }
    
    

    【讨论】:

      【解决方案2】:

      立即尝试

      <?php 
      $dir_name = 'images/random/';
      $pattern="/(gif|jpg|jpeg|png)/";
      
      $min = 100;
      $max = 500;
      $imagearray = array();
      $scanned_directory = array_diff(scandir($dir_name), array('..', '.'));
      $count = count($scanned_directory);
      $ids = array_keys($scanned_directory);
       
      
      $s = TRUE;
      $stop = $count;
      while( ($s === TRUE) && ($stop >=0))
      {
              
          
          $random = mt_rand(0, $count - 1);
          $full_path_to_file = $dir_name.$scanned_directory[$ids[$random]];
          $ext = pathinfo($full_path_to_file, PATHINFO_EXTENSION);
          $file_size_kb = round(filesize($full_path_to_file)/1024);
          if (preg_match($pattern, $ext) && ($file_size_kb>=$min && $file_size_kb<=$max)) 
          {
              $s = FALSE;
              echo '<img src="'.$full_path_to_file.'" alt />';
          }
          $stop--;
      }
      
      ?>
      

      【讨论】:

      • 嗨@WiatroBosy 感谢您的帮助。但是不知道是哪个错误,还是不行
      • 我猜这是这一行的错误:$file_size_kb = round(filesize($file)/1024;
      • 嗨@Jitendra Yadav,我尝试了你的两个解决方案。该页面显示“此页面包含以下错误:第 2 行第 1 列的错误:文档末尾的额外内容以下是页面呈现到第一个错误。
      • 当服务器执行此行'$file_size_kb = round(filesize($file)/1024);'时,似乎服务器执行所有图像并且花费很长时间。它应该只执行一个文件。
      • @Gates,答案没有问题,我认为您的代码有一些问题。将您的代码添加到问题中,以便我们提供帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2014-02-19
      相关资源
      最近更新 更多