【问题标题】:sorting and displaying image based on size根据大小对图像进行排序和显示
【发布时间】:2010-10-30 00:27:48
【问题描述】:
<?php
foreach (glob("*.jpg") as $filename) {
    echo "$filename size " . filesize($filename) . "<br>";
    echo '<img src="'.$filename.'" height=150px><br>';
}
?>

使用该代码,我可以显示文件夹中的所有图像 我只想显示一个满足尺寸参数的,如果有更多忽略它们 基本上是想显示一个像盒子一样的

或者,我只想显示该 foreach 循环的第一张图片 如果没有图像,则显示默认图像

编辑 所以

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

【问题讨论】:

  • 请稍微澄清一下您的意图。您要过滤图像的“尺寸参数”是什么?是以像素为单位的宽度和高度,还是以千字节为单位的图像所需的存储空间?我假设是前者,因为您想要一个“像一个盒子”,但它是否需要完全是方形的,或者有一定的纵横比,或者其他一些四四方方的标准?

标签: php directory image


【解决方案1】:

使用 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

【讨论】:

  • 伟大的作品,我可以给正方形设置一个范围,例如图像接近正方形但不是==
猜你喜欢
  • 2020-12-27
  • 2014-04-27
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 2017-06-13
  • 2017-04-05
  • 2015-08-31
相关资源
最近更新 更多