Ответ 1
$imagesDir = 'images/tips/';
$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$randomImage = $images[array_rand($images)]; // See comments
Вы можете отправить 2-й аргумент в array_rand()
, чтобы получить более 1.
У меня есть один каталог, называемый изображениями/подсказками.
Теперь в этом каталоге у меня есть много изображений, которые могут измениться.
Я хочу, чтобы PHP script читал каталог, находил изображения и из этих изображений находил случайное изображение.
Любая идея о том, как это сделать?
$imagesDir = 'images/tips/';
$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$randomImage = $images[array_rand($images)]; // See comments
Вы можете отправить 2-й аргумент в array_rand()
, чтобы получить более 1.
$images = glob('images/tips/*');
return $images[rand(0, count($images) - 1)];
Однако это не гарантирует, что одно и то же изображение не будет выбрано дважды подряд.
<?php
foreach (glob("gallery/*") as $filename) {
echo '<li><a href="'.$filename.'" title=""><img src="'.$filename.'" alt="" /></a> </li>';
}
?>
Посмотрите на этот код, используйте его, если это полезно для вас. Он загружает все файлы из папки и печатает их в формате выше. Я сделал этот код для использования с лайтбокс.
function get_rand_img($dir)
{
$arr = array();
$list = scandir($dir);
foreach($list as $file)
{
if(!isset($img))
{
$img = '';
}
if(is_file($dir . '/' . $file))
{
$ext = end(explode('.', $file));
if($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png' || $ext == 'GIF' || $ext == 'JPEG' || $ext == 'JPG' || $ext == 'PNG')
{
array_push($arr, $file);
$img = $file;
}
}
}
if($img != '')
{
$img = array_rand($arr);
$img = $arr[$img];
}
$img = str_replace("'", "\'", $img);
$img = str_replace(" ", "%20", $img);
return $img;
}
echo get_rand_img('images');
замените "изображения" на вашу папку.
Согласовано с alexa. Используйте простую функцию.
function RandImg($dir)
{
$images = glob($dir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$randomImage = $images[array_rand($images)];
return $randomImage;
}
$the_image = RandImg('images/tips/');
echo $the_image;
Вы можете использовать opendir() для чтения в именах файлов из этого каталога, сохраняя каждое имя файла в массиве. Затем используйте rand() с минимальным и максимальным соответствием вашим клавишам массива, чтобы выбрать элемент из массива.
Упрощение:
$directory = "medias/photos/";
$img = glob($directory . "*.jpg");
shuffle($img);
$folder = "images";
$results_img_arr = array();
if (is_dir($folder))
{
if ($handle = opendir($folder))
{
while(($file = readdir($handle)) !== FALSE)
{
if(!in_array($file,array(".","..")))
$results_img_arr[] = $folder."/".$file;
}
closedir($handle);
}
}
$ran_img_key = array_rand($results_img_arr);
$img_path = $results_img_arr[$ran_img_key];
создайте папку "php"
в корне вашего веб-сервера и поместите в этот файл php rotate.php
...
<?php
###############################################
# Simple Php Image Rotator - 1.1 - 24.10.2018 #
# Alessandro Marinuzzi - http://www.alecos.it #
###############################################
function rotate($folder) {
$list = scandir($folder);
$fileList = array();
$img = '';
foreach ($list as $file) {
if (is_file($folder . '/' . $file)) {
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
if ($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png') {
$fileList[] = $file;
}
}
}
if (count($fileList) > 0) {
$imageNumber = time() % count($fileList);
$img = $folder . '/' . $fileList[$imageNumber];
}
return $img;
}
?>
Использование (например, в корне у вас может быть папка "pic"
содержащая ваши изображения):
<a href="/<?php include("php/rotate.php"); echo rotate("pic"); ?>">
Другое использование с использованием библиотеки highslide
:
<a href="/<?php include("php/rotate.php"); echo rotate("pic"); ?>" class="highslide" onclick="return hs.expand(this)"><img src="/<?php echo rotate("pic"); ?>" title="Click To Enlarge" alt="Random Gallery" width="90" height="67"></a>
Загрузите папку с изображениями:
$folder = opendir(images/tips/);
Создайте таблицу из файлов/изображений из каталога:
$i = 0;
while(false !=($file = readdir($folder))){
if($file != "." && $file != ".."){
$images[$i]= $file;
$i++;
}
}
Выберите случайное:
$random_img=rand(0,count($images)-1);
Показать на странице:
echo '<img src="images/tips'.$images[$random_img].'" alt="" />';
Надеюсь, это поможет. Конечно, заключите его в <?php ?>
.