Gates Zuckerburg
Gates Zuckerburg

Reputation: 9

How to select image sized between 100-500 kb?

I have a short PHP code to help me display random images from a specific folder. But now it seems to select any image in any size. I want those selected images are between 100-500 kb. If it's less than 100 kb or over 500 kb, the function won't select and display it. Could you please tell me how to modify this code? Probably need to add some function.

<?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 />';
?>

Upvotes: 0

Views: 499

Answers (2)

WiatroBosy
WiatroBosy

Reputation: 1124

Try now

<?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--;
}

?>

Upvotes: 1

Darshan Malani
Darshan Malani

Reputation: 476

Try this one We have to set 2 conditions

$min =  100; //KB
$max = 500; //KB

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

Upvotes: 1

Related Questions