根据大小排序和显示图像

时间:2009-05-29 21:31:02

标签: php directory image

<?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 个答案:

答案 0 :(得分:2)

您只能使用break显示第一张图片:

foreach (glob("*.jpg") as $filename) {
    echo "$filename size " . filesize($filename) . "<br>";
    echo '<img src="'.$filename.'" height=150px><br>';
    break;
}

仅打印符合特定尺寸的那个,使用getimagesize并将宽度/高度与您想要的宽度/高度进行比较,所以基本上使用上面的代码,但是在foreach循环内包围if 。以下可能有效,但我没有长时间使用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)。