сортировка и отображение изображения по размеру - PullRequest
2 голосов
/ 30 мая 2009
<?php
foreach (glob("*.jpg") as $filename) {
    echo "$filename size " . filesize($filename) . "<br>";
    echo '<img src="'.$filename.'" height=150px><br>';
}
?>

используя этот код, я могу отобразить все изображения в папке я хочу отобразить только один, который соответствует параметру размера, и если их больше, игнорировать их в основном хочу отобразить тот, который похож на поле

и в качестве альтернативы я хочу отображать только первое изображение этого цикла foreach и если нет изображений, отобразите изображение по умолчанию

EDIT так что

<?php
foreach (glob("*.jpg") as $filename) {
    $info = getimagesize($filename);
    if ($info[0] == $info[1]) {
        echo "$filename size " . filesize($filename) . "<br>";
        echo '<img src="'.$filename.'" height=150px><br>';
        break;
    }
}
?>

дает вам изображение, если это коробка, (спасибо schnaader) верно, но изображения, которые находятся рядом с полем, также должны быть включены, как это можно отсортировать, это означает, что высота, деленная на ширину, дает более 1

1 Ответ

2 голосов
/ 30 мая 2009

Вы можете отобразить только первое изображение, используя перерыв:

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>

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