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

 PHP.SU

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


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

> Описание: проблемы загрузки фото
dmaw
Отправлено: 23 Ноября, 2009 - 14:23:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


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




Есть крипт немного мною модифицированный, предназначен для сжатия фотографий во время закачки

CODE (text):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. $path_to_image_directory = 'images/cash/'; //Папка, куда будут загружаться полноразмерные изображения
  4.  
  5. function createThumbnail($filename) {
  6.  
  7. $final_width_of_image = 600; //Размер изображения которые Вы хотели бы получить (И ШИРИНА И ВЫСОТА)
  8. $path_to_image_directory = 'images/cash/'; //Папка, куда будут загружаться полноразмерные изображения
  9. $path_to_thumbs_directory = 'images/';//Папка, куда буду загружать миниатюры
  10.        
  11.         //Определяем формат изображения
  12.         if(preg_match('/[.](jpg)$/', $filename))
  13.         {
  14.                 $im = imagecreatefromjpeg($path_to_image_directory . $filename);
  15.         }
  16.         elseif(preg_match('/[.](gif)$/', $filename))
  17.         {
  18.                 $im = imagecreatefromgif($path_to_image_directory . $filename);
  19.         }
  20.         elseif(preg_match('/[.](JPG)$/', $filename))
  21.         {
  22.                 $im = imagecreatefromjpeg($path_to_image_directory . $filename);
  23.         }
  24.         elseif(preg_match('/[.](png)$/', $filename))
  25.         {
  26.                 $im = imagecreatefrompng($path_to_image_directory . $filename);
  27.         }
  28.        
  29.         $ox = imagesx($im);
  30.         $oy = imagesy($im);
  31.        
  32.         $nx = $final_width_of_image;
  33.         $ny = floor($oy * ($final_width_of_image / $ox));
  34.        
  35.         $nm = imagecreatetruecolor($nx, $ny);
  36.        
  37.         imagecopyresampled($nm, $im, 0, 0, 0, 0, $nx, $ny, $ox, $oy);
  38.        
  39.         //imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);
  40.        
  41.         if(!file_exists($path_to_thumbs_directory)) {
  42.           if(!mkdir($path_to_thumbs_directory)) {
  43.            die("Возникли проблемы загрузки изображения! Попробуйте снова!");
  44.           }
  45.        }
  46.  
  47.         imagejpeg($nm, $path_to_thumbs_directory . $filename);
  48.         $foto = '<img src="' . $path_to_thumbs_directory . $filename . '" alt="image" />';
  49.         echo '<br />Изображение успешно загружено!';
  50. }
  51.  
  52. if(isset($_FILES['fupload']))
  53. {
  54.         //Ставим допустимые форматы изображений для загрузки
  55.         if(preg_match('/[.](jpg)|(JPG)|(gif)|(png)$/', $_FILES['fupload']['name']))
  56.          {
  57.                 $filename_date = date("d_m_Y-H_i_s-");//дата и время загрузки
  58.                 $filename = $filename_date.$_FILES['fupload']['name'];
  59.                
  60.                 $source = $_FILES['fupload']['tmp_name'];      
  61.                 $target = $path_to_image_directory . $filename;
  62.                
  63.                 move_uploaded_file($source, $target);
  64.                
  65.                 createThumbnail($filename);            
  66.         }
  67. }
  68.  
  69. //удаляю оригинал
  70. unlink("$target");
  71.  
  72. ?>


Проблема в том, что фотки большого размера примерно 500кб не хотят обрабатываться, браузер просто не открывает страницу, с маленькими фотографиями всё впорядке.

Попробовать скрипт можно на странице http://modelmen[dot]ru/admin/foto_ma[dot][dot][dot]r/foto_maker.php
 
 Top
JustUserR
Отправлено: 23 Ноября, 2009 - 14:28:17
Post Id



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


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


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




dmaw Time_limit или memory_limit - похожий вопрос был только что в соседней теме - http://forum.php.su/topic.php?fo...1&topic=2911


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
dmaw
Отправлено: 23 Ноября, 2009 - 14:44:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


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




JustUserR, теоретически я понял, а вот практически как это решить не знаю Не понял
 
 Top
Stierus Супермодератор
Отправлено: 23 Ноября, 2009 - 14:53:06
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




Я у себя ограничил размер загружаемой кртинки и максимальные разрешения (по совету чемпа ;) ). перед какими-либо манипуляциями, надо проверять :

PHP:
скопировать код в буфер обмена
  1. if (!is_uploaded_file($file) || ($_FILES['foto']['size'] > 1 * 1024 * 1024) ) // Example Validation: Need file < 1Mb
  2.         {
  3.                 return 'nophoto.png';
  4.         }
  5.         if (!($size = @getimagesize($file))) // Example Validation: Needs an image
  6.         {
  7.                 return 'nophoto.png';
  8.         }
  9.        
  10.         if (!in_array($size[2], array(1, 2, 3) ) ) // Example Validation: Needs a jpeg, gif, psd
  11.         {
  12.                 return 'nophoto.png';
  13.         }
  14.         if(($size[0] + $size[1]) > 2000){  //Example Validation: Needs 1000х1000 img max
  15.                 return 'nophoto.png';
  16.         }

Ну а Time_limit или memory_limit устаноаить можно с помощью Ini_set
 
My status
 Top
dmaw
Отправлено: 23 Ноября, 2009 - 14:57:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


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




Stierus, лимиты это понятно, но у меня фотка и так небольшая, а проблема существует, хотя в денвере всё работает.
Stierus пишет:
Ну а Time_limit или memory_limit устаноаить можно с помощью Ini_set

Вы профи, а для меня это пока всё ново, вобщем для меня Ini_set ничего пока не говорит Не понял
 
 Top
Stierus Супермодератор
Отправлено: 23 Ноября, 2009 - 15:00:28
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




зайдите на php.net и посмотрите, что там пишут. Даже примеры там есть
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB