За последние 24 часа нас посетили 22776 программистов и 1223 робота. Сейчас ищут 808 программистов ...

Помогите правильно вызвать функцию

Тема в разделе "Сделайте за меня", создана пользователем daur, 20 июн 2017.

  1. daur

    daur Новичок

    С нами с:
    13 июн 2017
    Сообщения:
    37
    Симпатии:
    7
    Доброе утро. Почему-то не работает функция, не могу понять
    upload.php
    Код (Text):
    1. <?php[/B]
    2. [B]include 'functions.php';
    3. $path = 'images/'; //Путь до папки
    4. $types = array('image/gif', 'image/png', 'image/jpeg'); //типы
    5. echo '<pre>';
    6. $img = $_FILES['img'];
    7. $type = $img['type'];
    8. $size = 10000;
    9. $tmp_path = 'tmp/';
    10.  
    11. if ($_SERVER['REQUEST_METHOD'] == 'POST')
    12.  
    13. {
    14. if(empty(array_intersect($types, $type)))
    15.     {
    16.     print_r($type);
    17.     die('Данный тип файла фотографий не поддерживается. Вернитесь назад и выберите фотографию с друугим разрешением .jpeg, .gif или .png ');
    18.     }
    19. if(!empty($img))
    20. {
    21.     $img_desc = reArrayFiles($img);
    22.     foreach($img_desc as $val)
    23.     {
    24.     $newname = date('YmdHis',time()).mt_rand().'.jpg';
    25.     $name = resize($_FILES['img'], $_POST['file_type'], $_POST['file_rotate']);
    26.  
    27.   // Проверяем размер файла
    28. if (filesize($path)  > $size){
    29.   die('Слишком большой размер файла. <a href="?">Попробовать другой файл?</a>');
    30. }
    31.  
    32.  
    33. if (copy($val['tmp_name'], $path .$newname .$name )){
    34.  
    35.      echo '<p>Загрузка прошла удачно <a href="' . $path . $newname .'">Посмотреть</a>.</p>';
    36.      }
    37.       else {
    38.       echo 'Произошла ошибка';
    39.   }
    40.  
    41.    }
    42.  
    43.     }
    44.   }
    45.  
    46.  

    Функция
    Код (Text):
    1. function resize($img, $type = 1, $rotate = null, $quality = null)[/B]
    2. [B]    {
    3.         global $tmp_path;
    4.  
    5.  
    6.              // Ограничение по ширине в пикселях
    7.         $max_thumb_size = 800;
    8.         $max_size = 1800;
    9.  
    10.         // Качество изображения по умолчанию
    11.      
    12.  
    13.             if ($quality == null)
    14.             $quality = 50;
    15.         // Cоздаём исходное изображение на основе исходного файла
    16.         if ($_FILES['img']['type'] == 'image/jpeg')
    17.             $source = imagecreatefromjpeg($file['tmp_name']);
    18.         elseif ($_FILES['img']['type'] == 'image/png')
    19.             $source = imagecreatefrompng($file['tmp_name']);
    20.         elseif ($_FILES['img']['type'] == 'image/gif')
    21.             $source = imagecreatefromgif($file['tmp_name']);
    22.         else
    23.             return false;
    24.          
    25.         // Поворачиваем изображение
    26.         if ($rotate != null)
    27.             $src = imagerotate($source, $rotate, 0);
    28.         else
    29.             $src = $source;
    30.  
    31.         // Определяем ширину и высоту изображения
    32.         $w_src = imagesx($src);
    33.         $h_src = imagesy($src);
    34.  
    35.         // В зависимости от типа (эскиз или большое изображение) устанавливаем ограничение по ширине.
    36.         if ($type == 1)
    37.             $w = $max_thumb_size;
    38.         elseif ($type == 2)
    39.             $w = $max_size;
    40.  
    41.         if ($type == 2)
    42.         $quality = '30';
    43.  
    44.         // Если ширина больше заданной
    45.         if ($w_src > $w)
    46.         {
    47.             // Вычисление пропорций
    48.             $ratio = $w_src/$w;
    49.             $w_dest = round($w_src/$ratio);
    50.             $h_dest = round($h_src/$ratio);
    51.  
    52.             // Создаём пустую картинку
    53.             $dest = imagecreatetruecolor($w_dest, $h_dest);
    54.          
    55.             // Копируем старое изображение в новое с изменением параметров
    56.             imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
    57.  
    58.             // Вывод картинки и очистка памяти
    59.             imagejpeg($dest, $tmp_path . $img['name'], $quality);
    60.             imagedestroy($dest);
    61.             imagedestroy($src);
    62.  
    63.             return $img['name'];
    64.         }
    65.         else
    66.         {
    67.             // Вывод картинки и очистка памяти
    68.             imagejpeg($src, $val['tmp_name'], $img['name'], $quality);
    69.             imagedestroy($src);
    70.  
    71.             return $img['name'];
    72.         }
    73.     }
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    учитесь пошаговой отладке ...
    не работает - понятие растяжимое, на каком шаге не работает определили? что именно не то?
    чесно гвооря тут почти каждая строка спорная ))) так что гадать как то сложно
     
  3. SProx

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

    С нами с:
    5 сен 2016
    Сообщения:
    34
    Симпатии:
    6
    кто так пишет горит в аду?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    тут пишут начинающие, если что подсказывай правильный вариант, или просто ссылку на тот же https://secure.php.net/manual/ru/control-structures.switch.php
     
    daur нравится это.
  5. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    я вот так делаю выбор типа

    PHP:
    1. //Определяем его размер
    2. $sizeImg = getimagesize ($imgIn);
    3.  
    4. //Формат изображения удаляя лишнее из  [mime] => image/gif
    5. $formatImg = strtolower(substr($sizeImg['mime'], strpos($sizeImg['mime'], '/')+1));
    6.  
    7. //создание текста для вызова функции например imagecreatefrom+jpg
    8. $imgFunc = "imagecreatefrom" . $formatImg;
    9.  
    10. //Проверка наличия функции
    11. if (!function_exists($imgFunc)) {
    12.     return FALSE;
    13. }
    14.  
    15. //с помощью текста созданной функции вызываем саму функцию и создаем объект изображения в памяти.
    16. $imgSrc = $imgFunc($imgIn);  
     
    daur нравится это.
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    а если тип будет image/jpeg ниче не поломается? ))))
     
    daur нравится это.
  7. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    уже два года работает)) сотни тысяч картинок загружены)) ничего не поломалось)
     
    daur нравится это.
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    ошибся. имел ввиду тип
    ... да их мало, но они есть
    просто сотнях тыщах файлов и не заметите что десяток другой не отработает
     
    daur и Алекс8 нравится это.
  9. daur

    daur Новичок

    С нами с:
    13 июн 2017
    Сообщения:
    37
    Симпатии:
    7
    Спасибо, попробую
     
  10. daur

    daur Новичок

    С нами с:
    13 июн 2017
    Сообщения:
    37
    Симпатии:
    7
    Ни черта не выходит который день..
    Код (Text):
    1. if ($_SERVER['REQUEST_METHOD'] == 'POST')
    2.  
    3. {
    4. if(empty(array_intersect($types, $type)))
    5.     {
    6.     print_r($type);
    7.     die('Данный тип файла фотографий не поддерживается. Вернитесь назад и выберите фотографию с друугим разрешением .jpeg, .gif или .png ');
    8.     }
    9.  
    10. if(!empty($img))
    11. {
    12.     $img_desc = reArrayFiles($img);
    13.     foreach($img_desc as $val)
    14.     {
    15.     $newname = date('YmdHis',time()).mt_rand().'.jpg';
    16.    
    17. // Проверяем размер файла
    18. if (filesize($path)  > $maxsize){
    19.   die('Слишком большой размер файла. <a href="?">Попробовать другой файл?</a>');
    20. }
    21.  
    22.  
    23.  
    24.  
    25.  
    26. $name = resize($img, $_POST['file_type'], $_POST['file_rotate']);
    27. print_r($name);
    28. if (copy($val['tmp_name'], $path .$name .$newname .$name)){
    29.  
    30.  
    31.  
    32.      echo '<p>Загрузка прошла удачно <a href="' . $path . $newname .'">Посмотреть</a>.</p>';
    33.      }
    34.       else {
    35.       echo 'Произошла ошибка';
    36.   }
    Код (Text):
    1. function resize($file, $type = 1, $rotate = null, $quality = null)
    2.     {
    3.         global $tmp_path;
    4.  
    5.         // Ограничение по ширине в пикселях
    6.         $max_thumb_size = 200;
    7.         $max_size = 600;
    8.    
    9.         // Качество изображения по умолчанию
    10.         if ($quality == null)
    11.             $quality = 75;
    12.  
    13.         // Cоздаём исходное изображение на основе исходного файла
    14.         if ($file['type'] == 'image/jpeg')
    15.             $source = imagecreatefromjpeg($file['tmp_name']);
    16.         elseif ($file['type'] == 'image/png')
    17.             $source = imagecreatefrompng($file['tmp_name']);
    18.         elseif ($file['type'] == 'image/gif')
    19.             $source = imagecreatefromgif($file['tmp_name']);
    20.         else
    21.             return false;
    22.            
    23.         // Поворачиваем изображение
    24.         if ($rotate != null)
    25.             $src = imagerotate($source, $rotate, 0);
    26.         else
    27.             $src = $source;
    28.  
    29.         // Определяем ширину и высоту изображения
    30.         $w_src = imagesx($src);
    31.         $h_src = imagesy($src);
    32.  
    33.         // В зависимости от типа (эскиз или большое изображение) устанавливаем ограничение по ширине.
    34.         if ($type == 1)
    35.             $w = $max_thumb_size;
    36.         elseif ($type == 2)
    37.             $w = $max_size;
    38.  
    39.         // Если ширина больше заданной
    40.         if ($w_src > $w)
    41.         {
    42.             // Вычисление пропорций
    43.             $ratio = $w_src/$w;
    44.             $w_dest = round($w_src/$ratio);
    45.             $h_dest = round($h_src/$ratio);
    46.  
    47.             // Создаём пустую картинку
    48.             $dest = imagecreatetruecolor($w_dest, $h_dest);
    49.            
    50.             // Копируем старое изображение в новое с изменением параметров
    51.             imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
    52.  
    53.             // Вывод картинки и очистка памяти
    54.             imagejpeg($dest, $tmp_path . $file['name'], $quality);
    55.             imagedestroy($dest);
    56.             imagedestroy($src);
    57.  
    58.             return $file['name'];
    59.         }
    60.         else
    61.         {
    62.             // Вывод картинки и очистка памяти
    63.             imagejpeg($src, $tmp_path . $file['name'], $quality);
    64.             imagedestroy($src);
    65.  
    66.             return $file['name'];
    67.         }
    68.     }
     
  11. gruth

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

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    А более подробно? Зачем ты проверяешь метод запроса? Есть интересная функция для поиска mime типов картинок - in_array. Гугли. Не понял зачем array_intersect используешь.