За последние 24 часа нас посетили 18067 программистов и 1605 роботов. Сейчас ищут 1377 программистов ...

Не уменьшаются картинки более 2Мб

Тема в разделе "Обработка изображений средствами PHP", создана пользователем RomIII, 6 авг 2009.

  1. RomIII

    RomIII Активный пользователь

    С нами с:
    27 фев 2007
    Сообщения:
    7
    Симпатии:
    0
    Использую функцию которая загружает и уменьшает картинки. С картинками до 2 мб все работает отлично, а вот если больше 2х мб то выводится белый экран, причем картинка загружается но не уменьшается.
    Увеличить время скрипта не получилось. На сервере установлен safemode. Хостер разрешает загружать файлы до 8 мб.
    Как можно решить такую проблему? Ограничивать размер загружаемых фоток для пользователей нельзя.

    сама функция, навсякий случай:
    Код (Text):
    1.  
    2. function upload($name, $tmp_name, $id)
    3. {
    4.  
    5.      if (eregi("\.(jpg|jpeg)",$name,$my_type))
    6.      {
    7.      chmod("../pic", 0777);
    8.      $pach= strtolower("../pic/$id.jpg");
    9.      set_time_limit (0);
    10.  
    11.             if (move_uploaded_file($tmp_name,$pach))
    12.            {
    13.            $image = $pach;
    14.            $max_width = 400;
    15.            $max_height = 400;
    16.  
    17.            $size = GetImageSize($image);
    18.            $width = $size[0];
    19.            $height = $size[1];
    20.            $x_ratio = round(($max_width/$width), 3);                
    21.            $y_ratio = round(($max_height/$height), 3);                
    22.  
    23.                      if ( ($width <= $max_width) && ($height <= $max_height) )
    24.                      {
    25.                      $tn_width = $width;
    26.                       $tn_height = $height;
    27.                       }
    28.                      else if (($x_ratio * $height) < $max_height)
    29.                       {
    30.                       $tn_height = ceil($x_ratio * $height);
    31.                      $tn_width = $max_width;
    32.                       }
    33.                       else  {
    34.                       $tn_width = ceil($y_ratio * $width) ;
    35.                       $tn_height = $max_height;
    36.                      }
    37.                            
    38.             $thumb = imagecreatetruecolor($tn_width, $tn_height);
    39.             $source = imagecreatefromjpeg($image);
    40.             imagecopyresized($thumb, $source, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    41.             imagejpeg($thumb, $pach);
    42.             ImageDestroy($thumb);
    43.             ImageDestroy($source);                            
    44.             }
    45.      chmod("../pic/$id.jpg", 0644);
    46.      chmod("../pic", 0755);
    47.      echo "<h1>Загружено</h1>";
    48.      }
    49.      else
    50.      {
    51.      echo "<h1>не загружено...</h1> ";
    52.      }          
    53. }
     
  2. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    не хватает памяти?
     
  3. RomIII

    RomIII Активный пользователь

    С нами с:
    27 фев 2007
    Сообщения:
    7
    Симпатии:
    0
    скорей всего. а как это проверить? и как этого избежать?
     
  4. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    error_reporting(E_ALL) для начала поставить
     
  5. RomIII

    RomIII Активный пользователь

    С нами с:
    27 фев 2007
    Сообщения:
    7
    Симпатии:
    0
    Сделал, нет ошибок. при загрузке больших фоток скрипт доходит до загрузки и все. Фотка загрузилась, но не уменьшелась, не получила права 644, папка так и осталась с 777, и функция которая дорисовывает футер не выполняется.
     
  6. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    А отладить?
     
  7. RomIII

    RomIII Активный пользователь

    С нами с:
    27 фев 2007
    Сообщения:
    7
    Симпатии:
    0
    Что значит отладить? Все работает с малыми изображениями. Когда гружу большие то скрипт то скрипт останавливается. Как народ это обходит? ведь везде полно сайтов с такой функцией. В поисковиках примера решения не нашел :(
     
  8. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Нужно головой подумать просто


    Узнай для начала до какой строки у тебя выполняется код при загрузке большого изображения