2013-10-01 4 views
1

У меня есть каталог с почти 60 изображениями, но с качеством HD, поэтому их размер составляет около 5 ~ 6 МБ, а загрузка всех их на веб-странице - это много времени для сервера и браузера, чтобы оба зависали. Я читал this post и this other too, и поскольку я использую PHP 5.4.20 на своем сервере, я хотел бы использовать DirectoryIterator и LimitIterator, но пример оставить в сообщении не так ясен для меня, так как я не знаю, как двигаться вперед/назад в этом случае. Может ли кто-нибудь дать мне пример кода о файлах paginate в каталоге?Пагинальные файлы в каталоге

UPDATE: показать код

Прямо сейчас это, как я читать файлы:

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>'; 
} 
+0

Как правило, вы хотите создать эскиз для каждого изображения и загрузить его и загружать только HD-изображения, когда они должны. – Aristona

+0

@ Аристона, но по какой-то причине загрузка занимает больше времени, см. Мое издание за несколько минут – Reynier

ответ

1

ARISTONA абсолютно прав. Вероятно, вы должны изменить размер изображений в соответствующий формат файла, качество &. По крайней мере, если вы пытаетесь создать какую-то галерею, вы можете использовать что-то вроде магии изображения, чтобы создать «эскизы» для галереи, где щелчок по ним может привести вас к полноразмерному изображению.

Image magick доступен для написания сценариев на разных языках для пакетной обработки ваших изображений и создания эскизов, если вы хотите, чтобы он запускался как процесс, или из командной строки вы можете сделать это как один раз, что-то вроде того, что упоминается здесь : Batch resize images into new folder using ImageMagick

+1

Я делал это раньше, обратите внимание на сценарий, который я сделал, когда сначала загружаю небольшие изображения и связываю большие изображения, но по какой-то причине это тяжелый и изображения (большие пальцы) размером от 40 до 80 кбайт или меньше – Reynier

+0

hmm ok, я не могу помочь предоставить код примера, я не пишу никаких php, но помогая с временем загрузки и файлами миниатюр: если PNG подходящий для того, что вы делаете, вы можете попробовать запустить optiping над всеми вашими файлами. Это простой инструмент, который пытается выполнить различные настройки сжатия и перекомпонует с лучшим сжатием. Для меня уменьшены файлы размером более обширного каталога на 20% без потери качества. – pacifist

Смежные вопросы