За последние 24 часа нас посетили 19635 программистов и 1604 робота. Сейчас ищут 986 программистов ...

Сжатие рисунка более 200 кВ

Тема в разделе "Прочие вопросы по PHP", создана пользователем vetal5_5_5, 22 дек 2008.

  1. vetal5_5_5

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

    С нами с:
    8 ноя 2008
    Сообщения:
    19
    Симпатии:
    0
    При работе на моем компьютере нормально работает код, приведенный ниже


    Код (Text):
    1. [php]$dir = "foto/$id/";
    2.  
    3. if (is_uploaded_file($_FILES["myfile"]["tmp_name"])) {
    4.     $res = move_uploaded_file($_FILES["myfile"]["tmp_name"], $dir.$_FILES["myfile"]["name"]);
    5.    
    6.     }
    7.    
    8.    
    9.    
    10.    
    11.    
    12.    
    13.    
    14.    
    15.    
    16.    
    17.    
    18.          
    19.    
    20.    
    21.    
    22.          
    23.     $src=$dir.$_FILES["myfile"]["name"];   
    24.     $dest="foto/$id/foto.jpg" ;
    25.         $width=200;
    26.         $height=280;  
    27.          
    28.          
    29.          
    30.          
    31.        
    32.  
    33.  
    34.  
    35.  
    36.       function img_resize_real($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=78)
    37.      {
    38.          if (!file_exists($src)) return false;
    39.  
    40.          $size = getimagesize($src);
    41.  
    42.          if ($size === false) return false;
    43.  
    44.          // Определяем исходный формат по MIME-информации, предоставленной
    45.          // функцией getimagesize, и выбираем соответствующую формату
    46.          // imagecreatefrom-функцию.
    47.          $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
    48.          $icfunc = "imagecreatefrom" . $format;
    49.          if (!function_exists($icfunc)) return false;
    50.  
    51.          /* alg */
    52.          $src_w = intval($size[0]);
    53.          $src_h = intval($size[1]);
    54.          $set_w = abs(intval($width));
    55.          $set_h = abs(intval($height));
    56.          $src_x = $src_y = 0;
    57.  
    58.          if ($set_w == 0 && $set_h == 0) { $set_w = $src_w; $set_h = $src_h; }
    59.          if ($set_w > 0 && $set_h == 0)  { $set_h = ceil($src_h*$set_w/$src_w); }
    60.          if ($set_h > 0 && $set_w == 0)  { $set_w = ceil($src_w*$set_h/$src_h); }
    61.          $prc_w = ceil($src_w*$set_h/$src_h);
    62.          $prc_h = ceil($src_h*$set_w/$src_w);
    63.          if ($prc_h >= $set_h)
    64.          {
    65.              $out_w = $set_w; $out_h = $prc_h;
    66.          }
    67.          else
    68.          {
    69.              $out_w = $prc_w; $out_h = $set_h;
    70.          }
    71.          if ($out_w > $set_w)
    72.          {
    73.              $xw = ceil($set_w*$src_h/$set_h);
    74.              $src_x = ceil(($src_w-$xw)/2);
    75.          }
    76.          if ($out_h > $set_h)
    77.          {
    78.              $xh = ceil($set_h*$src_w/$set_w);
    79.              $src_y = ceil(($src_h-$xh)/2);
    80.          }
    81.  
    82.          if ($out_w > $set_w || $out_h > $set_h)
    83.          {
    84.              if ($out_w > $set_w)
    85.              {
    86.                  $h = ceil($out_h*$set_w/$out_w); $w = $set_w;
    87.              }
    88.              if ($out_h > $set_h)
    89.              {
    90.                  $w = ceil($out_w*$set_h/$out_h); $h = $set_h;
    91.              }
    92.          }
    93.          else
    94.          {
    95.              $w = $out_w; $h = $out_h;
    96.          }
    97.          $src_x = $src_y = 0;
    98.          $set_w = $out_w = $w;
    99.          $set_h = $out_h = $h;
    100.          /* alg */
    101.  
    102.  
    103.  
    104.          // Создаем новое изображение
    105.          $idest = imagecreatetruecolor($set_w, $set_h);
    106.          $isrc = $icfunc($src);
    107.  
    108.          // Копируем существующее изображение в новое с изменением размера:
    109.          imagecopyresampled(
    110.          $idest,  // Идентификатор нового изображения
    111.          $isrc,  // Идентификатор исходного изображения
    112.          0,0,      // Координаты (x,y) верхнего левого угла
    113.          // в новом изображении
    114.          $src_x,$src_y, // Координаты (x,y) верхнего левого угла копируемого
    115.          // блока существующего изображения
    116.          $out_w,    // Новая ширина копируемого блока
    117.          $out_h,    // Новая высота копируемого блока
    118.          $size[0], // Ширина исходного копируемого блока
    119.          $size[1]  // Высота исходного копируемого блока
    120.          );
    121.  
    122.          imagejpeg($idest, $dest, $quality);
    123.  
    124.          imagedestroy($isrc);
    125.          imagedestroy($idest);
    126.  
    127.          return array('width' => $out_w, 'height'=> $out_h);
    128.  
    129.      }
    130.  
    131.  
    132.  
    133.  
    134.  
    135.  
    136.  
    137.          
    138.     if (img_resize_real("$src","foto/$id/foto.jpg",200, 280))
    139.     {echo '<strong>Фото успешно загружено</strong>';
    140.     unlink ("$src");
    141.    
    142.     }
    143.   else
    144.     {echo '<strong>Произошла ошибка! Попробуйте еще раз</strong>';     }
    145. }[/php]

    При загрузке на сервер. Происходит только закачка файла без преобразования при размере файла более 200 кВ.
    Настройки php.ini на компьютере и на сервере одинаковы. Подскажите в чем может быть причина.[/code]
     
  2. vetal5_5_5

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

    С нами с:
    8 ноя 2008
    Сообщения:
    19
    Симпатии:
    0
    Обнаружил, что не срабатывает ф-ция imagecopyresampled
     
  3. vetal5_5_5

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

    С нами с:
    8 ноя 2008
    Сообщения:
    19
    Симпатии:
    0
    Может кто-то подскажет есть ли альтернативная ф-ция imagecopyresampled ?
    вычитал, что сздает большую нагрузку на сервер...