Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Случайный вывод из ображений из директорий
 
 автор: pornocat   (02.12.2006 в 13:31)   письмо автору
 
 

Есть папка Img в ней подпапки 001 и 002 в каждой по 10 изображений формата jpg


Необходимо создать станичку с предосмотром который случайно генерируется из изображения взятого из папки 001 или 002 и при нажатии на предосмотр попадаем на страничку которая показывает все изображения с предосмотром !!!

   
 
 автор: Fli   (02.12.2006 в 18:22)   письмо автору
 
   для: pornocat   (02.12.2006 в 13:31)
 

Простой пример:>>


<?php

//Общая директория изображений
define ("_IMG_root""img"    );

//Директории изображений
define ("_IMG_path_001""001");
define ("_IMG_path_002""002");

$List_path  = array (_IMG_path_001_IMG_path_002);
$R_e_l_path rand  (01                        );

//Генерируем случайную директорию
$Open_path_img opendir (_IMG_root."/".$List_path[$R_e_l_path]);

while (
$Read_element readdir ($Open_path_img)) {
       
$Image_array[] = $Read_element;
}
           for (
$x 0$x count ($Image_array); $x++) {
                if (
$Image_array[$x] == "."         ) { continue; }
                if (
$Image_array[$x] == ".."        ) { continue; }
                if (
$Image_array[$x] == "index.html") { continue; }
                if (
$Image_array[$x] == "index.htm" ) { continue; }

                
//В случае если windows хостинг
                
if ($Image_array[$x] == "Thumbs.db" ) { continue; }
                    
$Convert[] = $Image_array[$x];
           }
                  
//Подчитываем количество элементов массива
                  
$Img_array_count count ($Convert              );
                  
$Rand_image      rand  (0$Img_array_count -1);
                
                  
//Генерируем произвольную картинку
                  
$Select_element $Convert[$Rand_image];
           
                  
//Выводим случайное изображение
                  
echo     "<img src = \""._IMG_root."/".$List_path[$R_e_l_path]."/".$Select_element."\" />";
                  
closedir ($Open_path_img);
           
?>

   
 
 автор: Fli   (02.12.2006 в 20:25)   письмо автору
 
   для: Fli   (02.12.2006 в 18:22)
 

Хотя для проверки расширений лутше использовать такую конструкцию:

<?php
$REG 
"(.){1,32}(\.jpg)$";
?>

   
 
 автор: pornocat   (03.12.2006 в 21:50)   письмо автору
 
   для: Fli   (02.12.2006 в 20:25)
 

Спасибо Fli что ответили мне, ваш код работает,а можно чтобы код сам сканировал какое количество подпапок существует в основной папке (допустим от 001 до 026)

И ваш код выводит полностью картинку без предосмотра а хотелось бы с предосмотром!!!

   
 
 автор: Fli   (04.12.2006 в 09:59)   письмо автору
 
   для: pornocat   (03.12.2006 в 21:50)
 

Пожалуйста)))

<?php

//Общая директория изображений
define ("_IMG_root""img"    );

$Open_scan opendir (_IMG_root);

//Директории изображений
while ($Read_scan readdir ($Open_scan)) {
       if (
filetype (_IMG_root."/".$Read_scan) === "dir") {
           if (
$Read_scan == "." ) { continue; }
           if (
$Read_scan == "..") { continue; }
               
$Scan_element[] = $Read_scan;
       }
}

$Count_scan_array count ($Scan_element          );
$R_e_l_path       rand  (0$Count_scan_array -1);

//Генерируем случайную директорию
$Open_path_img opendir (_IMG_root."/".$Scan_element[$R_e_l_path]);

while (
$Read_element readdir ($Open_path_img)) {
       
$Image_array[] = $Read_element;
}
           for (
$x 0$x count ($Image_array); $x++) {
                if (
$Image_array[$x] == "."         ) { continue; }
                if (
$Image_array[$x] == ".."        ) { continue; }
                if (
$Image_array[$x] == "index.html") { continue; }
                if (
$Image_array[$x] == "index.htm" ) { continue; }

                
//В случае если windows хостинг
                
if ($Image_array[$x] == "Thumbs.db" ) { continue; }
                    
$Convert[] = $Image_array[$x];
                    
$Check     count ($Convert);
           }
                if (!empty (
$Check)) {
                    
//Подчитываем количество элементов массива
                    
$Img_array_count count ($Convert              );
                    
$Rand_image      rand  (0$Img_array_count -1);
                
                    
//Генерируем произвольную картинку
                    
$Select_element $Convert[$Rand_image];
           
                    
//Выводим случайное изображение
                    
echo     "<img src = \""._IMG_root."/".$Scan_element[$R_e_l_path]."/".$Select_element."\" />";
                    
closedir ($Open_path_img);
                } else {
                  echo 
"Нет изображения!";
                }
           
?> 


А пред предсмотра это чтоб тыкаешь на изображение, и оно открывалось в отдельном окне? Или уменьшалось?

   
 
 автор: pornocat   (04.12.2006 в 20:48)   письмо автору
 
   для: Fli   (04.12.2006 в 09:59)
 

Здравствуйте Fli!!!
Я только осваиваю Php и хочу вам выразить ОГРОМНУЮ благодарность за то что вы отвечаете мне!!Может для вас это не сложно но для меня на начальных этапах сложновато изучать язык и ваша поддержка неоценима для меня!!!
Спасибо!!!!

Ваш код работает и генерирует случайную картинку , и я бы хотел чтобы он ее уменьшил с помощью библиотеки gd(создав предосмотр размером 200х200) и чтобы при нажатии на этот предосмотр открывалась страница со всеми картинками(из той же директории из которой взята случайная картинка!!!) и чтобы на этой стрнице умещалось картинок 10 и уж тогда при нажатии на предосмотр любой из 10 картинок она открывалась полностью!!

Ух и намудрил я!!!
Ещё раз Спасибо за ваше время и терпение!!!!

   
 
 автор: Fli   (04.12.2006 в 23:01)   письмо автору
 
   для: pornocat   (04.12.2006 в 20:48)
 

А так не подойдет>
width = "200" height = "200"
У тега img

   
 
 автор: pornocat   (06.12.2006 в 09:31)   письмо автору
 
   для: Fli   (04.12.2006 в 23:01)
 

К сожелению нет потомучто будет загружаться вся картинка а если их на странице 10шт каждая по250кб ......заснешь пока загрузится страница!!!

   
 
 автор: Fli   (06.12.2006 в 14:10)   письмо автору
 
   для: pornocat   (06.12.2006 в 09:31)
 

Создайте еше директорию temp, там где img!

<?php

//Общая директория изображений
define ("_IMG_root""img"    );

$Open_scan opendir (_IMG_root);

//Директории изображений
while ($Read_scan readdir ($Open_scan)) {
       if (
filetype (_IMG_root."/".$Read_scan) === "dir") {
           if (
$Read_scan == "." ) { continue; }
           if (
$Read_scan == "..") { continue; }
               
$Scan_element[] = $Read_scan;
       }
}

$Count_scan_array count ($Scan_element          );
$R_e_l_path       rand  (0$Count_scan_array -1);

//Генерируем случайную директорию
$Open_path_img opendir (_IMG_root."/".$Scan_element[$R_e_l_path]);

while (
$Read_element readdir ($Open_path_img)) {
       
$Image_array[] = $Read_element;
}
           for (
$x 0$x count ($Image_array); $x++) {
                if (
$Image_array[$x] == "."         ) { continue; }
                if (
$Image_array[$x] == ".."        ) { continue; }
                if (
$Image_array[$x] == "index.html") { continue; }
                if (
$Image_array[$x] == "index.htm" ) { continue; }

                
//В случае если windows хостинг
                
if ($Image_array[$x] == "Thumbs.db" ) { continue; }
                    
$Convert[] = $Image_array[$x];
                    
$Check     count ($Convert);
           }
                if (!empty (
$Check)) {
                    
//Подчитываем количество элементов массива
                    
$Img_array_count count ($Convert              );
                    
$Rand_image      rand  (0$Img_array_count -1);

                    
//Генерируем произвольную картинку
                    
$Select_element $Convert[$Rand_image];
                    
                    function 
img_resize($src$dest$width$height$rgb 0xFFFFFF$quality 100) {
                             if (!
file_exists($src)) return false;
                                 
$size getimagesize($src);
                             if (
$size === false) return false;
                                 
$format strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
                                 
$icfunc "imagecreatefrom" $format;
                             if (!
function_exists($icfunc)) return false;
                                  
$x_ratio     $width $size[0];
                                  
$y_ratio     $height $size[1];
                                  
$ratio       min($x_ratio$y_ratio);
                                  
$use_x_ratio = ($x_ratio == $ratio);
                                  
$new_width   $use_x_ratio  $width  floor($size[0] * $ratio);
                                  
$new_height  = !$use_x_ratio $height floor($size[1] * $ratio);
                                  
$new_left    $use_x_ratio  floor(($width $new_width) / 2);
                                  
$new_top     = !$use_x_ratio floor(($height $new_height) / 2);
                                  
$isrc        $icfunc($src);
                                  
$idest       imagecreatetruecolor($width$height);
                                  
                                  
imagefill          ($idest00$rgb                         );
                                  
imagecopyresampled ($idest$isrc$new_left$new_top00,
                                                      
$new_width$new_height$size[0], $size[1]);
                                  
imagejpeg          ($idest$dest$quality                    );
                                  
imagedestroy       ($isrc                                      );
                                  
imagedestroy ($idest                                           );
                                                return 
true;

                   }
                                  if (
img_resize(_IMG_root."/".$Scan_element[$R_e_l_path]."/".$Select_element"temp/".md5 ("temp").".jpg"200200))
                                      print 
"<img src = \"temp/".md5 ("temp").".jpg"."\" />";
                                  else
                                      echo 
'Failed!';
                                  
closedir ($Open_path_img);
                               } else {
                                 echo 
"Нет изображения!";
                               }

?>

   
 
 автор: pornocat   (06.12.2006 в 14:27)   письмо автору
 
   для: Fli   (06.12.2006 в 14:10)
 

Предосмотр выводит но не активный а нужно чтоб тыкаешь и открывается картинка полностью???

   
 
 автор: Fli   (06.12.2006 в 14:40)   письмо автору
 
   для: pornocat   (06.12.2006 в 14:27)
 

Замините:

print "<img src = \"temp/".md5 ("temp").".jpg"."\" />";

на:

print "<a href = "._IMG_root."/".$Scan_element[$R_e_l_path]."/".$Select_element."><img src = \"temp/".md5 ("temp").".jpg"."\" /></a>";

   
 
 автор: pornocat   (06.12.2006 в 14:51)   письмо автору
 
   для: Fli   (06.12.2006 в 14:40)
 

Супер!!!:))))

СПАСИБО ОГРОМНОЕ!!!

   
 
 автор: pornocat   (06.12.2006 в 16:09)   письмо автору
 
   для: Fli   (06.12.2006 в 14:40)
 

Интересно а можно на страницу вывести таких случайно сгенерированных предосмотров штук 10??


Пробовал с помощью
require_once
но эта функция оказывается не должна повторятся!!

   
 
 автор: Fli   (06.12.2006 в 16:48)   письмо автору
 
   для: pornocat   (06.12.2006 в 16:09)
 

Можно, но код надо немнога по другому написать)

   
 
 автор: pornocat   (06.12.2006 в 16:52)   письмо автору
 
   для: Fli   (06.12.2006 в 16:48)
 

Может когда у вас будет свободное время напишите пожалуйста эту вариацию кода!!!

   
 
 автор: Fli   (06.12.2006 в 17:54)   письмо автору
 
   для: pornocat   (06.12.2006 в 16:52)
 

Извините, вот пока было настроение, и немного время, написал не доработанный скрипт)


<?php

//Общая директория изображений
define  ("_IMG_root""img" );

function 
img_resize($src$dest$width$height$rgb 0xFFFFFF$quality 100) {
         if (!
file_exists($src)) return false;
              
$size getimagesize($src);
         if (
$size === false) return false;
             
$format strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
             
$icfunc "imagecreatefrom" $format;
         if (!
function_exists($icfunc)) return false;
              
$x_ratio     $width $size[0];
              
$y_ratio     $height $size[1];
              
$ratio       min ($x_ratio$y_ratio);
              
$use_x_ratio = ($x_ratio == $ratio);
              
$new_width   $use_x_ratio  $width  floor($size[0] * $ratio);
              
$new_height  = !$use_x_ratio $height floor($size[1] * $ratio);
              
$new_left    $use_x_ratio  floor(($width $new_width) / 2);
              
$new_top     = !$use_x_ratio floor(($height $new_height) / 2);
              
$isrc        $icfunc($src);
              
$idest       imagecreatetruecolor ($width$height                            );
                             
imagefill            ($idest00$rgb                         );
                             
imagecopyresampled   ($idest$isrc$new_left$new_top00,
                                                   
$new_width$new_height$size[0], $size[1]);
                             
imagejpeg            ($idest$dest$quality                    );
                             
imagedestroy         ($isrc                                      );
                             
imagedestroy         ($idest                                     );
                             return 
true;

}


$Open_temp opendir ("temp");
while (
$Read_temp readdir ($Open_temp)) {
       if (
$Read_temp == "."  ) { continue; }
       if (
$Read_temp == ".." ) { continue; }
       
$NEW_TEMP[] = $Read_temp;
}

$Open_scan opendir (_IMG_root);

for (
$xx 0$xx count ($NEW_TEMP); $xx++) {
//Директории изображений
while ($Read_scan readdir ($Open_scan)) {
       if (
filetype (_IMG_root."/".$Read_scan) === "dir") {
           if (
$Read_scan == "." ) { continue; }
           if (
$Read_scan == "..") { continue; }
               
$Scan_element[] = $Read_scan;
       }
}

$Count_scan_array count ($Scan_element          );
$R_e_l_path       rand  (0$Count_scan_array -1);

//Генерируем случайную директорию
$Open_path_img opendir (_IMG_root."/".$Scan_element[$R_e_l_path]);

while (
$Read_element readdir ($Open_path_img)) {
       
$Image_array[] = $Read_element;
}
           for (
$x 0$x count ($Image_array); $x++) {
                if (
$Image_array[$x] == "."         ) { continue; }
                if (
$Image_array[$x] == ".."        ) { continue; }
                if (
$Image_array[$x] == "index.html") { continue; }
                if (
$Image_array[$x] == "index.htm" ) { continue; }

                
//В случае если windows хостинг
                
if ($Image_array[$x] == "Thumbs.db" ) { continue; }
                    
$Convert[] = $Image_array[$x];
                    
$Check     count ($Convert);
           }
                if (!empty (
$Check)) {
                    
//Подчитываем количество элементов массива
                    
$Img_array_count count ($Convert              );
                    
$Rand_image      rand  (0$Img_array_count -1);

                    
//Генерируем произвольную картинку
                    
$Select_element $Convert[$Rand_image];
                    
$RANOM[]        = $Convert[$Rand_image];
                    
                    
$DEARRAY implode ("-"$RANOM);
                    if (
substr_count ($DEARRAY$Select_element) > 1)  { continue; }
                                  if (
img_resize(_IMG_root."/".$Scan_element[$R_e_l_path]."/".$Select_element"temp/".md5 ("$Select_element").".jpg"200200)) {
                                      print 
"<a href = "._IMG_root."/".$Scan_element[$R_e_l_path]."/".$Select_element."><img src = \"temp/".md5 ("$Select_element").".jpg"."\" /></a>";
                                  } else {
                                      echo 
'Failed!';
                                  }
                                  
                               } else {
                                 echo 
"Нет изображения!";
                               }
                               if (
$xx 9) { break; }
}


?>

   
 
 автор: pornocat   (06.12.2006 в 19:50)   письмо автору
 
   для: Fli   (06.12.2006 в 17:54)
 

Да показывает картинки, но половину из них пишет Failed!!
и в папке temp не удаляются автоматически превьюшки(((

   
 
 автор: Fli   (06.12.2006 в 20:09)   письмо автору
 
   для: pornocat   (06.12.2006 в 19:50)
 

Дык запихайте туды unlink)))

   
 
 автор: pornocat   (08.12.2006 в 21:37)   письмо автору
 
   для: Fli   (06.12.2006 в 20:09)
 

Куда не пойму???

   
 
 автор: pornocat   (08.12.2006 в 21:37)   письмо автору
 
   для: Fli   (06.12.2006 в 20:09)
 

Куда не пойму???

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования