【问题标题】:Paginate files in a directory对目录中的文件进行分页
【发布时间】:2013-10-01 00:43:03
【问题描述】:

我有一个目录,其中包含近 60 张图像,但都是高清质量的,因此它们的大小约为 5 ~ 6 MB,并且将它们全部加载到网页中对于服务器和浏览器来说需要很多时间,因此两者都挂断了。我读了this postthis other too 并且因为我在我的服务器中使用PHP 5.4.20 我想使用DirectoryIteratorLimitIterator 但是帖子中的示例离开对我来说并不那么明确,因为我没有在这种情况下不知道如何前进/后退。谁能给我一些关于目录中文件分页的示例代码?

更新:显示一些代码

现在我是这样读取文件的:

function directoryToArray($directory, $recursive) {
    $array_items = array();
    if ($handle = opendir($directory)) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                if (is_dir($directory . "/" . $file)) {
                    if ($recursive) {
                        $array_items = array_merge($array_items, directoryToArray($directory . "/" . $file, $recursive));
                    }
                    $file = $directory . "/" . $file;
                    $array_items[] = preg_replace("/\/\//si", "/", $file);
                } else {
                    $file = $directory . "/" . $file;
                    $array_items[] = preg_replace("/\/\//si", "/", $file);
                }
            }
        }
        closedir($handle);
    }
    return $array_items;
}

$images = directoryToArray("images/portfolio/");
for ($i = 0; $i < count($images); $i++) {
    $old_img_name = explode('/', $images[$i]);
    $new_img_name = $old_img_name[0] . "/" . $old_img_name[1] . '/large/' . $old_img_name[2];

    echo '<div class="span4 element">';
    echo '<div class="hover_img">';
    echo '<img src="' . $images[$i] . '" alt="" />';
    echo '<span class="portfolio_zoom"><a href="' . $new_img_name . '" data-rel="prettyPhoto[portfolio1]"></a></span>';
    echo '</div>';
    echo '</div>';
}

【问题讨论】:

  • 一般情况下,您会希望为每张图片生成缩略图并加载它们,并且只在它们应该加载的时候才加载高清图片。
  • @Aristona 做了,但由于某种原因加载需要更多时间,请在几分钟后查看我的版本

标签: php pagination


【解决方案1】:

阿里斯托纳完全正确。您可能应该将图像大小调整为适当的文件格式、质量和大小。至少,如果您想制作某种图库,您可以使用 image magick 之类的东西为图库制作“缩略图”,单击它们可能会带您进入全质量图像。

Image magick 可以用多种语言编写脚本,以批量处理您的图像并构建缩略图,如果您希望它作为一个进程运行,或者您可以从命令行一次性完成,就像这里提到的那样: Batch resize images into new folder using ImageMagick

【讨论】:

  • 我之前做过,请注意在脚本中我首先加载小图像并链接大图像,但由于某种原因太重,图像(拇指)大小在 40~80 kb 或更少之间
  • 嗯好的,我无法提供示例代码,我不编写任何 php,但有助于加载时间和缩略图文件大小:如果 PNG 适合您正在做的事情您可以尝试对所有文件运行 optiping。这是一个简单的工具,可以尝试不同的压缩设置并以最佳压缩方式重新压缩。对我来说,将庞大目录中的文件大小减少了 20%,而不会降低质量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 2014-04-05
  • 2012-01-02
  • 2012-08-09
  • 2021-12-04
  • 1970-01-01
相关资源
最近更新 更多