|
|
|
|
<?php
$array_img = array();
if ($dir = opendir("lightbox/images")) {
while (($file = readdir($dir)) !== false) {
if($file!= "." && $file!= ".."){
array_push($array_img,$file);
print "<pre>";
print_r($array_img);
print "</pre>";
}
}
closedir($dir);
}
?>
|
Можно ли как-то по-другому составить массив из названий файлов, которые входят в данную директорию? | |
|
|
|
|
|
|
|
для: Лена
(25.11.2008 в 15:31)
| |
<?
$array_img = array();
foreach (glob("lightbox/images/*.*") as $filename) $array_img[] = basename($filename);
|
| |
|
|
|
|
|
|
|
для: sim5
(25.11.2008 в 15:52)
| | Спасибо, получилось.
Интересно вот что. В полученном массиве сначала идут все файлы jpeg, потом все gif, а не вразброс, как при array_push | |
|
|
|
|
|
|
|
для: Лена
(25.11.2008 в 16:47)
| | А надо разбросать? | |
|
|
|
|
|
|
|
для: sim5
(25.11.2008 в 17:01)
| | Нет, разбрасывать не надо, просто удивилась, что все так аккуратно разложилось.
Проблема в том, что внутри этой папки могут быть другие папки, и я думала пройтись по ним рекурсией, теперь надо думать, как вот из этого выпутаться. | |
|
|
|
|
|
|
|
для: Лена
(25.11.2008 в 17:22)
| | Лучше организовать структуру папок так, чтобы обойтись без рекурсий. Зачем в Lightbox выводить сложную структуры вложенных папок? Может быть разделить вывод по разделам (категориям)? | |
|
|
|
|
|
|
|
для: sim5
(25.11.2008 в 18:29)
| | Попробую по разделам выводить. У меня все равно в базе в таблице картинок есть id модуля. Что получится, покажу. | |
|
|
|
|
|
|
|
для: Лена
(25.11.2008 в 17:22)
| | glob() по умолчанию сортирует полученный список файлов. | |
|
|
|
|
|
|
|
для: BinLaden
(25.11.2008 в 21:33)
| | Теперь расскажу, что делаю.
Для каждой картинки создается уменьшенная копия, все эти копии выводятся в броузер по 4 штуки в ряд. Кликаешь на уменьшенной картинке - появляется ее реальный размер.
<?php
//уменьшаем картинки
function resizeimg($filename, $smallimage, $w, $h){
// коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// размеры исходного изображения
$size_img = getimagesize($filename);
$type = $size_img['mime'];
// Если размеры меньше, то масштабирования не нужно
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// размеры уменьшенной копии, сохраняем пропорции источника
if ($ratio < $src_ratio)
$h = $w/$src_ratio; // $h - высота уменьшенной копии
else
$w = $h*$src_ratio; // $w - ширина уменьшенной копии
$dest_img = imagecreatetruecolor($w, $h); // $dest_img - уменьшенная копия
$white = imagecolorallocate($dest_img, 255, 255, 255);
switch($type){
case "image/jpeg": $src_img = imagecreatefromjpeg($filename); break;
case "image/png": $src_img = imagecreatefrompng($filename); break;
case "image/gif": $src_img = imagecreatefromgif($filename); break;
default: return false;
}
// масштабируем изображение
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h,
$size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
switch($type){
case "image/jpeg":
$img = imageJpeg($dest_img,$smallimage);
break;
case "image/png":
$img = imagePng($dest_img,$smallimage);
break;
case "image/gif":
$img = imageGif($dest_img,$smallimage);
break;
}
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return $smallimage;
}
//директория, где лежат картинки
$array_img = array();
foreach(glob("lightbox/images/*.*") as $filename)
$array_img[] = basename($filename);
$galery = "<table border = '1px'>";
for($i=0;$i<count($array_img);$i++){
$file = $array_img[$i];
$size = getimagesize("lightbox/images/" . $file);
//$type = $size['mime'];
if(!($i%4)) $galery .= "<tr>";
//горизонт. или вертик. картинка
if($size[0]>$size[1]){
$img = resizeimg("lightbox/images/" . $file, "lightbox/images/copy/" . $file, 180, 100);
header("Content-type:" . $type);
$galery .= "<td><a href='lightbox/images/" . $file . "'><img border='0' src='" . $img . "'
width='180' height='100' alt = '" .$file . "'></a></td>";
}else{
$img = resizeimg("lightbox/images/" . $file, "lightbox/images/copy/" . $file, 120, 180);
header("Content-type:" . $type);
$galery .= "<td><a href='lightbox/images/" . $file . "'><img border='0' src='" . $img . "'
width='120' height='180' alt = '" .$file . "'></a></td>";
}
if(!($i+1%4)) $galery .= "</tr>";
}
$galery .= "</table>";
print $galery;
?>
|
Проблема в типе изображения. У меня сейчас выводятся только jpg -файлы. Потому что при передаче заголовка не определена $type. Пробую ее определить $type = $size['mime']; - и у меня вообще ничего не выводится. Пустая страница. Что мне делать? | |
|
|
|
|
|
|
|
для: Лена
(25.11.2008 в 23:34)
| | вызовы header() здесь вообще только мешают. | |
|
|
|
|
|
|
|
для: Лена
(25.11.2008 в 23:34)
| | Во-первых убрать передачу заголовков (их нужно передавать, если изображение формируется и отдается в браузер средствами GD). Во-вторых не делать так - готовить малые копии изображений нужно при загрузке их на сервер, а не на лету, для показа галереии в Lightbox. | |
|
|
|