Страница 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();
в результате некоторые фото не соответствуют своего места, в общем путаница... :unknown:

Re: случайный вывод фото PHP

Добавлено: 2008-07-03 11:44:33
zg
radiofannat писал(а):в результате некоторые фото не соответствуют своего места, в общем путаница... :unknown:
переведи
radiofannat писал(а):$numberfoto=rand(0,count($array)-1);
пхп выгодно отличается тем, в нём есть функции на все случаи жинзи, например array_rand :good:

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 там много чего есть :smile:
radiofannat писал(а):может подскажешь что то подобное уже готовое?
если только реализовать тот функционал, который есть у тебя, то щас сделаю

Re: случайный вывод фото PHP

Добавлено: 2008-07-03 12:19:34
radiofannat
было бы неплохо :roll:

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 :roll:

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 )
посибо огромное!!! :drinks:

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 делишь на случайный файл... зачем? :smile: если уж на то пошло, то

Код: Выделить всё

$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 писал(а):получилось, но размер не соотвецтвует!
на счёт размера.. ну мягко говоря не верится :cf: что дело тут в getimagesize 8)

Re: случайный вывод фото PHP

Добавлено: 2008-07-03 18:35:27
radiofannat
да нет, всё правельно он считает, только как бы показывает размер другой фотки...
вот посмотри

Re: случайный вывод фото PHP

Добавлено: 2008-07-03 18:46:57
zg
radiofannat писал(а):всё правельно он считает, только как бы показывает размер другой фотки...
:oops: ну... да, так и есть, ты ж ему сам говоришь показывать размер случайной фотки
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 />
:drinks:

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 :roll:[/quote]
[/code]

случайный вывод фото PHP

Добавлено: 2016-02-15 22:39:52
Духовитин
radiofannat как же прекрасен твой слог!
Читал бы и читал только лишь твои посты :D