Losowanie obrazków

0

Witam serdecznie.

Posiadam taki skrypt do losowania obrazków(znaleziony) i czy dałoby się go przerobić tak żeby losował częściej z jednego folderu niż z drugiego.

<?php
$cfg['dir_images'] = array('images', 'images2');
$cfg['expansions'] = array('png', 'gif', 'jpg');

$tmp['file_list'] = glob('./{'.implode(',', $cfg['dir_images']).'}/*.{'.implode(',', array_unique(array_map('strtolower', $cfg['expansions']))).'}', GLOB_BRACE);
$tmp['how']['images'] = count($tmp['file_list']);

// Jeżeli wersja PHP < 4.2.0 wtedy zachodzi potrzeba użycia generator liczb losowych
// srand(floor(time() / (60*60*24)));

// Losowanie
$tmp['randed_img']['name_file'] = $tmp['file_list'][array_rand($tmp['file_list'])];
$tmp['randed_img']['file_info'] = getimagesize($tmp['randed_img']['name_file']);
// Throw
echo '<img src="'.$tmp['randed_img']['name_file'].'" '.$tmp['randed_img']['file_info'][3].' alt="Tekst alternatywny" />';
?>
0

Nie analizowałem dokładnie działania skryptu (jest tak brzydki, że nie chce mi się go czytać), ale zacznę od tego, że przy tak prostych skryptach warto samemu go napisać :) Wtedy będziesz miał pewność, że go rozumiesz.
Jak najprościej w większości wypadków zwiększyć prawdopodobieństwo wylosowania obrazka z danego folderu? Przypisz wagi do folderów. Tj. na przykład jeśli folder "images" będzie miał wagę 1, a "images2" będzie miał wagę 3, to z tego drugiego teoretycznie powinno losować się częściej. Wtedy możesz na przykład losować folder, z którego chcesz pobrać zdjęcie, a następnie z tego folderu wylosować zdjęcie.
Zostaw ten skrypt i spróbuj napisać samemu mniej więcej coś takiego:

$dirs = [
    'images1' => 1,
    'images2' => 3,
];
$dirsWithWeights = [];
foreach ($dirs as $dirName => $weight) {
    for ($i=0; $i<$weight; $i++) {
        $dirsWithWeights[] = $dirName;
    }
}
//todo: losowanie z tablicy $dirsWithWeights

Oczywiście najlepiej, żebyś ułożył to jakoś ładniej niż ja (opakowanie w klasę na przykład, podział na metody i dał jakieś czytelniejsze nazwy zmiennych [tu zawsze mam problem :P]).
Pozdrawiam.

0

Czyli do tego co podałeś mam jeszcze dodać losowanie obrazka?

1 użytkowników online, w tym zalogowanych: 0, gości: 1