Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Работа с jpg файлами чтение и вывод


Автор: PARROT 8.2.2006, 19:33
Получила такое задание:
1 открыть папку
2 получить списрк файлов название
3 отфильтровать .жпг
4 вывести их уменьшенными на страницу с подписями по 7 штук на строку (код дан без разбивки, так как не получается его осуществить).

Код

<?php
$in_dir = __FILE__;
$in_dir = "/home/vs/www/img/";
//$in_dir = "/home/g/grolvasp/abmi/public_html/img/";   //хостинг директория
$dir = '';
if(isset($_GET['dir'])) $dir = $_GET['dir'];
echo $in_dir.$dir . "<br><br>";
if($OpenDir=opendir($in_dir.$dir))
{
while(($file=readdir($OpenDir)) !== false)
        if(substr($file, -3) == 'jpg') {//фильтруем и выводим только jpg
if($file != "." && $file != "..")
if(is_dir($in_dir.$dir."/".$file)){
     for($i=0;$i<count($file);$i++){
         echo "<a href='$PHP_SELF?dir=img/$file'><img src=img/".$file." width=100 height=100 border><br></a>";
        }
echo "<a href='$PHP_SELF?dir=img/$file'>".$file."</a>"."&nbsp;&nbsp;( DIR)<BR/>";

}else{
for($i=0;$i<count($file);$i++){
         echo "<a href='img/$file'><img src=img/".$file." width=100 height=100 border></a><br>";
        }
echo "<a href='img/$file'>".$file."</a>"."&nbsp;&nbsp;".@filesize($file)." <BR/>";


}
}
}
?>

Вроде все работает, но вот никак не получается вывести по 7 картинок на строку, максимум, что получилось можно посмотреть тут: http://abmi.ru/
Надписи должны быть под картинкой smile
И может что-то можно изменить в коде, как-то упростить? smile

Автор: BobiKK 8.2.2006, 19:42
Дык, оформить это дело в виде таблицы

Автор: PARROT 8.2.2006, 20:14
Цитата(BobiKK @ 8.2.2006, 19:42)
Дык, оформить это дело в виде таблицы

Дык... это понятно:
Код

<table>
<?php
$in_dir = __FILE__;
//$in_dir = "/home/vs/www/img/";
$in_dir = "/home/g/grolvasp/abmi/public_html/img/";   //хостинг директория
$dir = '';
if(isset($_GET['dir'])) $dir = $_GET['dir'];
if($OpenDir=opendir($in_dir.$dir))
{
while(($file=readdir($OpenDir)) !== false)
        if(substr($file, -3) == 'jpg') {//фильтруем и выводим только jpg
if($file != "." && $file != "..")
if(is_dir($in_dir.$dir."/".$file)){
$a = 0;
$cols = 3;
?>
<tr>
<?
     for($i=0;$i<count($file);$i++){
 if($a==$cols) {
?>
</tr><tr>
<?
$a = 0;
}
         echo "<td><a href='$PHP_SELF?dir=img/$file'><img src=img/".$file." width=100 height=100 border></a></td><br>";
        }
echo "<td><a href='$PHP_SELF?dir=img/$file'>".$file."</a></td>";

}else{
for($i=0;$i<count($file);$i++){
         echo "<td><a href='img/$file'><img src=img/".$file." width=100 height=100 border></a></td><br>";
        }
echo "<td><a href='img/$file'>".$file."</a>"."&nbsp;&nbsp;".@filesize($file)."</td>";


}
}
}
?>

Вот что получилось, но это не то что я хочу. Как бы исправить. smile

Автор: Mal Hack 8.2.2006, 20:44
Цитата(PARROT @ 8.2.2006, 19:33 Найти цитируемый пост)

но вот никак не получается вывести по 7 картинок на строку,

Только чрез таблицы.
И потом вспомни, я уже давал код вывода в такую таблицу.
ЗЫ: А чем glob не катит?

Автор: PARROT 8.2.2006, 20:47
Mal Hack, это все что я пока смогла изобразить. Щас бьюсь с выводом, получается но не так. Там выводили из базы. С базой вообще проще работать, чем с директориями и папками.

Автор: Mal Hack 8.2.2006, 20:53
PARROT разницы никакой smile
Алгоритм продумай smile

Автор: PARROT 8.2.2006, 21:14
Это максимум чего я смогла нарисовать, выручите, никакой алгоритм уже не алгоритмится. Щас голову откручивать начнут.
Код

<table>
<?php
$in_dir = __FILE__;
//$in_dir = "/home/vs/www/img/";
$in_dir = "/home/g/grolvasp/abmi/public_html/img/";   //хостинг директория
$dir = '';
if(isset($_GET['dir'])) $dir = $_GET['dir'];
//echo $in_dir.$dir . "<br><br>";
if($OpenDir=opendir($in_dir.$dir))
{
$j = 0;
$cols = 2;
echo "<tr>";
while(($file=readdir($OpenDir)) !== false)
        if(substr($file, -3) == 'jpg') {//фильтруем и выводим только jpg
if($file != "." && $file != "..")
if(is_dir($in_dir.$dir."/".$file)){

     for($i=0;$i<count($file);$i++){
     if($j ==$cols) {
  echo "</tr><tr>";
  }
         echo "<td><a href='$PHP_SELF?dir=img/$file'><img src=img/".$file." width=100 height=100 border></a><br>";
        }
echo "<a href='$PHP_SELF?dir=img/$file'>".$file."</a>"."&nbsp;&nbsp;( DIR)<BR/></td>";
$j++;
}
else
{
for($i=0;$i<count($file);$i++){
if($j ==$cols) {
  echo "</tr><tr>";
  }
         echo "<td><a href='img/$file'><img src=img/".$file." width=100 height=100 border></a><br>";
        }
echo "<a href='img/$file'>".$file."</a></td>"."&nbsp;&nbsp;".@filesize($file)." <BR/>";
$j++;


}
}
}
?>
</table>

Добавлено @ 21:15
http://abmi.ru/

Автор: PARROT 8.2.2006, 21:49
ВСЕ!!!!!!!!! УРА! Получилось! smile

Автор: CoderUA 9.2.2006, 00:24
2 PARROT
Конечто миниатюрки ты делаешь оригинально. В прнципе они ни чем ни отличабтся от их старших собратьев!

Автор: PARROT 10.2.2006, 13:36
Требуется Ваш совет или может даже подсказка, в изменении алгоритма.
Потребовалась сортировка картинок по дате, по числу пришедшей картинки с камеры.
Что мне пришло в голову:
1) Когда читаем названия файлов, то мы их переименовываем по текущей дате создания, тоесть имя картинки будет таким: 9.2.2006, 00:24.jpg
2) При появлении новой картинки, например в 00.00 часов нового дня, создаем папку и складываем все картинки новой даты в эту папку. Тоесть на каждую дату, новую папку.

Какие будут предложения, мысли? дополнения? smile

Автор: Blaga 10.2.2006, 13:54
PARROT я сам новичок и не уверен что это сработает но... короче где то я видел функцию которая возвращает дату последнего изменения ну вот получать данные из этои функции и по ним вести сортировку. Может быть получится...

Автор: Mal Hack 10.2.2006, 14:01
filectime проще юзай если без БД.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)