Страница 1 из 1
случайный вывод фото PHP
Добавлено: 2008-07-03 10:32:15
radiofannat
есть несколько директорий в каждой лежат фотки, нужно зделать вывод по одной фотке из каждой директории..
привожу код:
Код: Выделить всё
//функция сканиревания директории
function scanngal()
{
$d = @opendir("gallery");
if (!$d) return;
while (($e=readdir($d)) !== false)
{
// Игнорируем элементы то что не нужно
if ($e=='.' || $e=='..' || $e=='smile') continue;
if (!@is_dir("gallery/$e")) continue;
//////////случайный вывод
$fotodir="gallery/$e/trumb";
$openfotodir=opendir($fotodir);
while ($fotok=readdir($openfotodir))
{
$fotom=substr($fotok,-4);
if ($fotom=='.jpg' or $fotom=='.jpeg' or $fotom=='.png' or $fotom=='.gif') $array[]=$fotok;
}
closedir($openfotodir);
$numberfoto=rand(0,count($array)-1);
echo "<img src='$fotodir/$array[$numberfoto]'><br>";
////////////////////////////
fclose($handle);
}
closedir($d);
}
scanngal();
в результате некоторые фото не соответствуют своего места, в общем путаница...
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 11:44:33
zg
radiofannat писал(а):в результате некоторые фото не соответствуют своего места, в общем путаница...
переведи
radiofannat писал(а):$numberfoto=rand(0,count($array)-1);
пхп выгодно отличается тем, в нём есть функции на все случаи жинзи, например
array_rand
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 12:01:01
radiofannat
выводит не все фотки а тех которыз нет:
Код: Выделить всё
Warning: opendir(gallery/3/trumb) [function.opendir]: failed to open dir: No such file or directory in /....../foto.php on line 26
Warning: readdir(): supplied argument is not a valid Directory resource in /.........../foto.php on line 27
Warning: closedir(): supplied argument is not a valid Directory resource in /........../foto.php on line 32
номер строки не соотвецтвует приведённому коду...
раньше была одна фотка и всё было супер-гуд, а после пришлось сделать с директориями и поставить скрипт анимации всех галлерей.. но вот проблема с рандом((((
может подскажешь что то подобное уже готовое?
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 12:06:46
zg
radiofannat писал(а):раньше была одна фотка и всё было супер-гуд, а после пришлось сделать с директориями и поставить скрипт анимации всех галлерей.. но вот проблема с рандом((((
проблемы не с рандом, а со знанием пхп, сходи на
http://php.net там много чего есть
radiofannat писал(а):может подскажешь что то подобное уже готовое?
если только реализовать тот функционал, который есть у тебя, то щас сделаю
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 12:19:34
radiofannat
было бы неплохо
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 12:29:38
zg
Код: Выделить всё
<?php
// Папка с галереями
$photosDir = 'images';
// Папка с эскизами
$thumbDir = 'trumb';
if ( is_dir($photosDir) )
{
foreach ( glob($photosDir .'/**', GLOB_ONLYDIR) as $dir )
{
// Проверка на существование папки с эскизами
if ( !is_dir( $dir .= '/'. $thumbDir ) ) continue;
$dirObj = dir($dir);
$files = array();
// Заполнение списка файлов в папке галереии
while ( false !== ($file = $dirObj->read()) )
if ( is_file($dir .'/'. $file) && is_image($file) ) $files[] = $file;
if ( $files )
{
// Вывод случайной картинки
?>
<table>
<tr><td><?=$dir?></td></tr>
<tr><td><img src="<?=$dir?>/<?=$files[ array_rand($files) ]?>" /></td></tr>
</table>
<br />
<?
}
}
}
/**
* Проверка имени файла на принадлежность к картинкам
*
* @param string $file
* @return bool
*/
function is_image( $file )
{
return (bool) preg_match('/\.(gif|png|jpe?g)$/i', $file);
}
?>
UPD: ввёл папку trumb
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 12:34:15
radiofannat
сейчас попробую!
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 12:48:29
radiofannat
всё работает на ура! только есть небольшой нюанс, небольшое уточнение по каталогам:
в каталоге галлерея есть много галлерей, в каждой галлерее есть 2 каталога 1-большая фотка 2-маленькая...
вот примерный путь к маленькой фотке которую надо выводить:
gallery/...моя галерея.../trumb/123.jpg
как зделать?
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 12:57:12
radiofannat
зделал!
Код: Выделить всё
foreach ( glob($photosDir .'/*/trumb', GLOB_ONLYDIR) as $dir )
посибо огромное!!!
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 17:50:02
radiofannat
ещё такой вопрос, как получить размер фотки?
этот вариант не получатся...
Код: Выделить всё
$blah = getimagesize($dir/$files[ array_rand($files) ]);
$type = $blah['mime'];
$width = $blah[0];
$height = $blah[1];
echo "размер" ;
echo $width ;
echo " x ";
echo $height;
echo " px";
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 18:10:54
zg
radiofannat писал(а):ещё такой вопрос, как получить размер фотки?
этот вариант не получатся..
хм...
radiofannat писал(а):$blah = getimagesize($dir/$files[ array_rand($files) ]);
ты $dir делишь на случайный файл... зачем?
если уж на то пошло, то
Код: Выделить всё
$randomFile = $files[ array_rand($files) ];
$blah = getimagesize($dir .'/'. $randomFile);
....
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 18:23:25
radiofannat
получилось, но размер не соотвецтвует!
Код: Выделить всё
$size = getimagesize($dir."/".$files[ array_rand($files) ]);
echo "{$size[0]}"; //мне нужна только ширина/width
получается у каждой фотки случайный размер...
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 18:32:15
zg
radiofannat писал(а):получилось, но размер не соотвецтвует!
на счёт размера.. ну мягко говоря не верится
что дело тут в
getimagesize
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 18:35:27
radiofannat
да нет, всё правельно он считает, только как бы показывает размер другой фотки...
вот посмотри
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 18:46:57
zg
radiofannat писал(а):всё правельно он считает, только как бы показывает размер другой фотки...
ну... да, так и есть, ты ж ему сам говоришь показывать размер
случайной фотки
radiofannat писал(а): getimagesize($dir."/".$files[ array_rand($files) ]);
как ты думаешь для чего я ввёл переменную $randomFile?
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 18:49:17
radiofannat
кстати это с твоим вариантом, вот кусок кода в цикле...
Код: Выделить всё
<tr><td><img src="<?=$dir?>/<?=$files[ array_rand($files) ]?>" /></td></tr>
</table><br />
<?
$randomFile = $files[ array_rand($files) ];
$asd = getimagesize($dir .'/'. $randomFile);
echo "{$asd[0]}";
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 18:52:43
radiofannat
вот так вроди бы работает!!!!
Код: Выделить всё
$randomFile = $files[ array_rand($files) ];
$asd = getimagesize($dir .'/'. $randomFile);
echo "{$asd[0]}";
//echo $dir;
//echo "/";
//echo $files[ array_rand($files) ];
?>
<tr><td><img src="<?=$dir?>/<?=$randomFile?>" /></td></tr>
</table><br />
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 18:56:02
radiofannat
а вот что в итоге получилось)))
Re: случайный вывод фото PHP
Добавлено: 2008-07-03 18:57:08
zg
ну можно и так ))))
случайный вывод фото PHP
Добавлено: 2016-01-13 22:34:42
Константин
Код: Выделить всё
[quote="zg"][code]<?php
// Папка с галереями
$photosDir = 'images';
[list][list][code]
[/list][/list]
[img]// Папка с эскизами[/img]
$thumbDir = 'trumb';
if ( is_dir($photosDir) )
{
foreach ( glob($photosDir .'/**', GLOB_ONLYDIR) as $dir )
{
// Проверка на существование папки с эскизами
if ( !is_dir( $dir .= '/'. $thumbDir ) ) continue;
$dirObj = dir($dir);
$files = array();
// Заполнение списка файлов в папке галереии
while ( false !== ($file = $dirObj->read()) )
if ( is_file($dir .'/'. $file) && is_image($file) ) $files[] = $file;
if ( $files )
{
// Вывод случайной картинки
?>
<table>
<tr><td><?=$dir?></td></tr>
<tr><td><img src="<?=$dir?>/<?=$files[ array_rand($files) ]?>" /></td></tr>
</table>
<br />
<?
}
}
}
/**
* Проверка имени файла на принадлежность к картинкам
*
* @param string $file
* @return bool
*/
function is_image( $file )
{
return (bool) preg_match('/\.(gif|png|jpe?g)$/i', $file);
}
?>[/code]
UPD: ввёл папку trumb
[/quote]
[/code]
случайный вывод фото PHP
Добавлено: 2016-02-15 22:39:52
Духовитин
radiofannat как же прекрасен твой слог!
Читал бы и читал только лишь твои посты