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

 PHP.SU

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


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

> Описание: resize
zorg84
Отправлено: 20 Мая, 2011 - 01:32:23
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Май 2011  


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




Просьба помогите разобраться что делать Мне надо что бы при загрузке фото если оно больше чем надо по высоте ширение фото уменьшалось У меня есть скрипты но я не знаю как организовать что бы всё работало Подскажите что куда поставить
Вот скрипты
Форма загрузки

CODE (html):
скопировать код в буфер обмена
  1. <form action="upload.php" method="post" target="hiddenframe" enctype="multipart/form-data" onsubmit="hideBtn();">
  2. <input type="file" id="userfile" name="userfile" />
  3. <input type="submit" name="upload" id="upload" value="Загрузить" />
  4. </form>
  5. <div id="res"></div>
  6. <iframe id="hiddenframe" name="hiddenframe" style="width:0px; height:0px; border:0px"></iframe>

-------------------------------- -------------------------------- ----------
php обрабочик


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if(isset($_POST['upload'])){
  3.     //Список разрешенных файлов
  4.     $whitelist = array(".gif", ".jpeg",".jpg",".mp3", ".png");        
  5.     $data = array();
  6.     $error = true;
  7.    
  8.     //Проверяем разрешение файла
  9.     foreach  ($whitelist as  $item) {
  10.         if(preg_match("/$item\$/i",$_FILES['userfile']['name'])) $error = false;
  11.  
  12.  
  13.  
  14.  
  15.     }
  16.  
  17.  
  18.  
  19.     //если нет ошибок, грузим файл
  20.     if(!$error) {
  21.                  
  22.         $folder =  'upload/';//директория в которую будет загружен файл
  23.        
  24.         $uploadedFile =  $folder.basename($_FILES['userfile']['name']);
  25.                
  26.         if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
  27.        
  28.             if(move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadedFile)){
  29.        
  30.                 $data = $_FILES['userfile'];
  31.             }
  32.             else {    
  33.                 $data['errors'] = "Во время загрузки файла произошла ошибка";
  34.             }
  35.         }
  36.         else {    
  37.             $data['errors'] = "Файл не  загружен";
  38.         }
  39.     }
  40.     else{
  41.        
  42.         $data['errors'] = 'Вы загружаете запрещенный тип файла';
  43.     }
  44.    
  45.    
  46.     //Формируем js-файл    
  47.     $res = '<script type="text/javascript">';
  48.     $res .= "var data = new Object;";
  49.     foreach($data as $key => $value){
  50.         $res .= 'data.'.$key.' = "'.$value.'";';
  51.     }
  52.     $res .= 'window.parent.handleResponse(data);';
  53.     $res .= "</script>";
  54.    
  55.     echo $res;
  56.  
  57. }
  58. else{
  59.     die("ERROR");
  60. }
  61.  
  62.  
  63. ?>
  64. <?PHP
  65. list($w, $h) = getimagesize($uploadefile); // получаем размеры
  66. $x = $y = 0;  
  67. if ($w > $h) { // если ширина больше длины
  68.         $x = ($w - $h) / 2; // вычисляем начало
  69.         $w = $h + $x; // и конец координат
  70. } else { // иначе
  71.         $y = ($h - $w) / 2; // делаем тоже самое
  72.         $h = $w + $y; // для высоты
  73. }
  74. crop($uploadefile,$uploadefile,array($x,$y,$w,$h)); // запускаем функцию обрезки с массивом координат
  75. resize($uploadefile,$uploadefile,150,150); // запускаем функцию масштабирования
  76. ?>
  77.  
  78.  
  79. --------------------------------------------------------------------------
  80. php resize
  81.  
  82.  
  83.  
  84. <?PHP
  85.  
  86. /**
  87. * Масштабирование изображения
  88. *
  89. * Функция работает с PNG, GIF и JPEG изображениями.
  90. * Масштабирование возможно как с указаниями одной стороны, так и двух, в процентах или пикселях.
  91. *
  92. * @param string Расположение исходного файла
  93. * @param string Расположение конечного файла
  94. * @param integer Ширина конечного файла
  95. * @param integer Высота конечного файла
  96. * @param bool Размеры даны в пискелях или в процентах
  97. * @return bool
  98. */
  99. function resize($file_input, $file_output, $w_o, $h_o, $percent = false){
  100.         list($w_i, $h_i, $type) = getimagesize($file_input);
  101.         if (!$w_i || !$h_i) {
  102.                 echo 'Невозможно получить длину и ширину изображения';
  103.                 return;
  104.     }
  105.     $types = array('','gif','jpeg','jpg','png');
  106.     $ext = $types[$type];
  107.     if ($ext) {
  108.         $func = 'imagecreatefrom'.$ext;
  109.         $img = $func($file_input);
  110.     } else {
  111.         echo 'Некорректный формат файла';
  112.                 return;
  113.     }
  114.         if ($percent) {
  115.                 $w_o *= $w_i / 100;
  116.                 $h_o *= $h_i / 100;
  117.         }
  118.         if (!$h_o) $h_o = $w_o/($w_i/$h_i);
  119.         if (!$w_o) $w_o = $h_o/($h_i/$w_i);
  120.         $img_o = imagecreatetruecolor($w_o, $h_o);
  121.         imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
  122.         if ($type == 2) {
  123.                 return imagejpeg($img_o,$file_output,100);
  124.         } else {
  125.                 $func = 'image'.$ext;
  126.                 return $func($img_o,$file_output);
  127.         }
  128. }
  129.  
  130.  
  131.  
  132. ?>
  133.  
  134.  
  135. <?PHP
  136.  
  137.  
  138.  
  139. $files = array_slice(scandir('../upload/'),2); // получаем файлы из директории
  140.  
  141. foreach ($files as $file) {
  142.         resize($file, $file, 50, 0, true); // ширину не указываем – скрипт определит её сам
  143. }
  144.  
  145. ?>

(Добавление)
Виновен следующий раз сделаю как надо


Отредактировано модератором: SAD, 20 Мая, 2011 - 01:38:25
зачем лепить опрос, если он не нужен?
и зачем создавать 2 одинаковые темы?
обрамляйте код тегами!
 
 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