Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Достать изображения из папки и назначить им размер

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
morph1k
Отправлено: 04 Июля, 2013 - 14:22:16
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Здравствуйте!
Очень нужна помощь в решении следующей задачи,
1. Нужно из определенной папки достать изображения.
2. Дать им определенный размер (изображения называются по разному:
допустим изображение 265_6_!.png должно быть размером в 190х190 px, изображение
265_6_d.png должно быть 380х180px. ). Дело в том что все изображения не маштабируются в графическом редакторе а подаются в разных размерах, поэтому их нужно привести в нужный размер кодом.
3. И третье это розставить их в таком порядке см. картинку.


(Отредактировано автором: 04 Июля, 2013 - 14:23:48)

 
 Top
Denkill
Отправлено: 04 Июля, 2013 - 14:47:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 330
Дата рег-ции: Янв. 2013  
Откуда: Барнаул


Помог: 7 раз(а)




А в чем проблема. Библиотека GD для php и масштабтруй как хочешь


-----
Хо-Хо-Хо
 
 Top
VenZell
Отправлено: 04 Июля, 2013 - 14:52:22
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




Частично упрощу тебе задачу:
PHP:
скопировать код в буфер обмена
  1. /* Поиск изображений в папке $path и ее подпапках */
  2. function traverse_hierarchy($path)
  3. {
  4.     $return_array = array();
  5.     $dir = opendir($path);
  6.     while(($file = readdir($dir)) !== false)
  7.     {
  8.         if($file[0] == '.') continue;
  9.         $fpath = $path . '/' . $file;
  10.         if(is_dir($fpath)){
  11.             $return_array = array_merge($return_array, traverse_hierarchy($fpath));
  12.         }
  13.         else{
  14.              if(in_array(substr($file, -3), array("jpg", "png", "gif"))){
  15.                  $return_array[] = $fpath;
  16.              }
  17.         }
  18.     }
  19.     return $return_array;
  20. }
  21. /* Массив изображений */
  22. $images = traverse_hierarchy($path);
  23. //echo "<pre>" . implode(PHP_EOL, $images) . "</pre>";

(Отредактировано автором: 04 Июля, 2013 - 14:53:33)

 
 Top
morph1k
Отправлено: 04 Июля, 2013 - 16:44:33
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




VenZell, Denkill , спасибо ! но для человека который слаб в пхп, это мало чем поможет Огорчение
 
 Top
morph1k
Отправлено: 08 Июля, 2013 - 16:10:39
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Есть следующий код который достает фотки с папки

PHP:
скопировать код в буфер обмена
  1.  <?PHP
  2.  $imgDir = 'путь';
  3.  $imgs = scandir($imgDir);
  4.  foreach($imgs as $item) {
  5.  if (strpos(strtolower($item), ".png") ) {
  6.  echo '<img src="'.$item.'" alt="'.$item.'" class="box">';
  7.  }
  8.  }
  9.  ?>


помогите пожалуйста задать этим фоткам определенный размер...
ПОДРОБНЕЕ:
у нас есть фотка с названием name_d.png она должна быть размером в 190 на 190 пикселей;
есть фотка с названием name_d_!.png она должна быть размером 380 на 190 пикселей
И т.д.

За рание большое человеческое спасибо !

(Отредактировано автором: 08 Июля, 2013 - 17:36:49)

 
 Top
Darrek
Отправлено: 08 Июля, 2013 - 23:47:35
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




с использованием библиотеки GD
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.  $imgDir = 'img';
  5.  //перебор файлов надо поменять
  6.  $imgs = scandir($imgDir);
  7.  foreach($imgs as $item) {
  8.  if (strpos(strtolower($item), ".png") ) {  
  9.  //пример
  10. //взял за указатель необходимого размера восклицательный знак  
  11. //другие критерии не указаны
  12.      if (strpos($item, "_!")) resize($imgDir.'/'.$item,190,190,true);
  13.              else resize($imgDir.'/'.$item,380,190,true);
  14.  
  15.  }
  16.  }
  17.  
  18. function resize($path_img,$new_width,$new_height,$save_dim=false) {
  19.   //ВАЖНО - перезаписывает существующий файл
  20.  // функция также работает с gif, jpg
  21.  // параметр $save_dim- определяет, будут сохранены пропорции или нет
  22.  
  23.    
  24.     list($width, $height,$type) = getimagesize($path_img);
  25.    
  26.     switch ($type) {
  27.     case IMAGETYPE_JPEG:
  28.         $old_img= imagecreatefromjpeg($path_img);break;
  29.     case IMAGETYPE_GIF:
  30.          $old_img=imagecreatefromgif($path_img);break;
  31.     case IMAGETYPE_PNG:
  32.         $old_img=imagecreatefrompng($path_img);break;
  33.     }  
  34.         $koef_w=$new_width/$width;
  35.         $koef_h=$new_height/$height;  
  36.         if ($save_dim== false) {
  37.             if($koef_w>$koef_h) $koef_w=$koef_h;
  38.                     else $koef_h=$koef_w;
  39.         }  
  40.     $new_width =  intval($width*$koef_w);
  41.     $new_height=  intval($height*$koef_h);
  42.     $new_img= imagecreatetruecolor ($new_width, $new_height);  
  43.    imagecopyresampled ($new_img,$old_img,0,0,0,0,$new_width,$new_height,$width,$height);
  44.    
  45.      switch ($type) {
  46.     case IMAGETYPE_JPEG:
  47.        imagejpeg ( $new_img,$path_img,75 );break;
  48.     case IMAGETYPE_GIF:
  49.           imagegif ( $new_img,$path_img );break;
  50.     case IMAGETYPE_PNG:
  51.         imagepng ( $new_img,$path_img,4 );break;
  52.     // 4 - Степень сжатия: от 0 (нет сжатия) до 9.
  53.     }
  54.      imagedestroy ($new_img );
  55.      imagedestroy ($old_img );    
  56.  
  57. }
  58. ?>
  59.  

(Отредактировано автором: 09 Июля, 2013 - 00:00:22)

 
 Top
morph1k
Отправлено: 09 Июля, 2013 - 17:18:27
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




Darrek пишет:
с использованием библиотеки GD
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.  $imgDir = 'img';
  5.  //перебор файлов надо поменять
  6.  $imgs = scandir($imgDir);
  7.  foreach($imgs as $item) {
  8.  if (strpos(strtolower($item), ".png") ) {  
  9.  //пример
  10. //взял за указатель необходимого размера восклицательный знак  
  11. //другие критерии не указаны
  12.      if (strpos($item, "_!")) resize($imgDir.'/'.$item,190,190,true);
  13.              else resize($imgDir.'/'.$item,380,190,true);
  14.  
  15.  }
  16.  }
  17.  
  18. function resize($path_img,$new_width,$new_height,$save_dim=false) {
  19.   //ВАЖНО - перезаписывает существующий файл
  20.  // функция также работает с gif, jpg
  21.  // параметр $save_dim- определяет, будут сохранены пропорции или нет
  22.  
  23.    
  24.     list($width, $height,$type) = getimagesize($path_img);
  25.    
  26.     switch ($type) {
  27.     case IMAGETYPE_JPEG:
  28.         $old_img= imagecreatefromjpeg($path_img);break;
  29.     case IMAGETYPE_GIF:
  30.          $old_img=imagecreatefromgif($path_img);break;
  31.     case IMAGETYPE_PNG:
  32.         $old_img=imagecreatefrompng($path_img);break;
  33.     }  
  34.         $koef_w=$new_width/$width;
  35.         $koef_h=$new_height/$height;  
  36.         if ($save_dim== false) {
  37.             if($koef_w>$koef_h) $koef_w=$koef_h;
  38.                     else $koef_h=$koef_w;
  39.         }  
  40.     $new_width =  intval($width*$koef_w);
  41.     $new_height=  intval($height*$koef_h);
  42.     $new_img= imagecreatetruecolor ($new_width, $new_height);  
  43.    imagecopyresampled ($new_img,$old_img,0,0,0,0,$new_width,$new_height,$width,$height);
  44.    
  45.      switch ($type) {
  46.     case IMAGETYPE_JPEG:
  47.        imagejpeg ( $new_img,$path_img,75 );break;
  48.     case IMAGETYPE_GIF:
  49.           imagegif ( $new_img,$path_img );break;
  50.     case IMAGETYPE_PNG:
  51.         imagepng ( $new_img,$path_img,4 );break;
  52.     // 4 - Степень сжатия: от 0 (нет сжатия) до 9.
  53.     }
  54.      imagedestroy ($new_img );
  55.      imagedestroy ($old_img );    
  56.  
  57. }
  58. ?>
  59.  


Спасибо ! Помогло ! Хм
(Добавление)
А еще такой вопрос...

PHP:
скопировать код в буфер обмена
  1. <div id='last_page_image_grid' >
  2. <?PHP
  3.  $imgDir = '/image_bot/265';
  4.  $imgs = scandir($imgDir);
  5.  foreach($imgs as $item) {
  6.      if (strpos(strtolower($item), ".png") ) {  
  7.      if (strpos($item, "_!")) $size = "width='330px' height='165px'";
  8.        elseif (strpos($item, "_v")) $size = "height='330px' width='165px'";
  9.             elseif (strpos($item, "_d")) $size = "width='660px' height='165px'";
  10.                 else $size = "height='165px' width='165px'";
  11. echo '<img src="/image_bot/265/'.$item.'" alt="'.$item.'" '.$size.' class="last_page_image_box">';
  12.  }
  13.  }
  14. ?>
  15. </div>


Как мне сделать так что бы когда папки нету то выводился какой то текст типа не найдено ?
Потому что сейчас если папки нету то выводится ошибка.?
 
 Top
esterio
Отправлено: 09 Июля, 2013 - 18:32:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




PHP:
скопировать код в буфер обмена
  1. $imgDir = '/image_bot/265';
  2. if(is_dir($imgDir))
  3. {
  4.         $imgs = scandir($imgDir);
  5.         foreach($imgs as $item)
  6.         {
  7.                 if (strpos(strtolower($item), ".png") )
  8.                 {
  9.                         if (strpos($item, "_!"))
  10.                                 $size = "width='330px' height='165px'";
  11.                         elseif (strpos($item, "_v"))
  12.                                 $size = "height='330px' width='165px'";
  13.                         elseif (strpos($item, "_d"))
  14.                                 $size = "width='660px' height='165px'";
  15.                         else
  16.                                 $size = "height='165px' width='165px'";
  17.                 }
  18.         }
  19.         echo '<img src="/image_bot/265/'.$item.'" alt="'.$item.'" '.$size.' class="last_page_image_box">';
  20. }
  21. else
  22.         echo 'Folder not found';
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB