Вы можете отобразить только первое изображение, используя перерыв:
foreach (glob("*.jpg") as $filename) {
echo "$filename size " . filesize($filename) . "<br>";
echo '<img src="'.$filename.'" height=150px><br>';
break;
}
Для печати только того, который соответствует определенному размеру, используйте getimagesize и сравните ширину / высоту с тем, который вам нужен, поэтому в основном используйте приведенный выше код, но оберните знак if вокруг строк внутри цикл foreach. Следующее может сработать, но я долго не использовал PHP, поэтому не надейтесь на него:
foreach (glob("*.jpg") as $filename) {
$info = getimagesize($filename);
if ($info[0] == $width_i_want) {
if ($info[1] == $height_i_want) {
echo "$filename size " . filesize($filename) . "<br>";
echo '<img src="'.$filename.'" height=150px><br>';
break;
}
}
}
А если вы хотите получить изображение квадратного размера, используйте
if ($info[0] == $info[1]) {
[...]
РЕДАКТИРОВАТЬ: чтобы получить изображение, которое ближе всего к квадратному размеру, попробуйте это:
$record_ratio = 0;
foreach (glob("*.jpg") as $filename) {
$info = getimagesize($filename);
$ratio = $info[0] / $info[1];
if (abs(1 - $ratio) < abs(1 - $record_ratio)) {
$record_ratio = $ratio;
$record_filename = $filename;
}
if (record_ratio == 1) break;
}
if ($record_ratio > 0) {
echo '<img src="'.$record_filename.'" height=150px><br>';
}
Варианты этого также могут дать вам изображения, отсортированные по соотношению, или изображения с соотношением между двумя значениями (например, 0,75 <= коэффициент <= 1,25). </p>