За последние 24 часа нас посетили 22772 программиста и 1561 робот. Сейчас ищет 901 программист ...

imagecopyresampled () возвращает NULL

Тема в разделе "PHP для новичков", создана пользователем SamyRed, 8 июн 2017.

  1. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Здравствуйте. Пол ночи просидел.Не могу понять в чём проблема. Проверил все переменные, вроде как, правильные, но imagecopyresampled почему-то возвращает NULL* и созаёт чёрное изображение.
    PHP:
    1.  if (copy($file_tmp_name, $file_orig_name)) {
    2.             switch ($file_extension) {
    3.                 case 'gif':
    4.                     $img = imagecreatefromgif ($file_orig_name);
    5.                 break;
    6.                 case 'jpeg':
    7.                     $img = imagecreatefromjpeg ($file_orig_name);
    8.                 break;
    9.                 case 'png':
    10.                     $img = imagecreatefrompng ($file_orig_name);
    11.                 break;
    12.                 default:
    13.                     $errs[] = 'Недопустимый формат файла. Допустимые форматы: gif, jpeg, pjpeg, png';
    14.                 break;
    15.             }
    16.          
    17.             $file_new_name = './userFiles/'.$file_id.'.'.$file_extension;
    18.          
    19.             $orig_width = imageSX ($img);
    20.             $orig_height = imageSY ($img);
    21.          
    22.             $k = round ($orig_width / 900, 3);
    23.          
    24.             $new_width = $orig_width / $k;
    25.             $new_height = $orig_height / $k;
    26.          
    27.             $new_img = imagecreatetruecolor($new_width, $new_height);
    28.          
    29.             imagecopyresampled($file_new_name, $file_orig_name, 0, 0, 0, 0, $new_width, $new_height, $orig_width, $orig_height);
    30.          
    31.             switch ($file_extension) {
    32.                 case 'gif':
    33.                     $res = imagegif ($new_img, $file_new_name);
    34.                 break;
    35.                 case 'jpeg':
    36.                     $res = imagejpeg ($new_img, $file_new_name);
    37.                 break;
    38.                 case 'png':
    39.                     $res = imagepng ($new_img, $file_new_name);
    40.                 break;
    41.                 default:
    42.                     $errs[] = 'Недопустимый формат файла. Допустимые форматы: gif, jpeg, pjpeg, png';
    43.                 break;
    44.             }
    45.          
    46.             imagedestroy ($new_img);
    47.             imagedestroy ($img);
    48.          
    49.             $db->query ("INSERT INTO `user_files`(`id`, `user_id`, `path`, `date`, `type`, `is_delete`) VALUES (NULL, '$user_id', '$file_new_name', '".time ()."', '$file_type', 0)");
    50.          
    51.         } else {
    52.             $errs[] = 'Ошибка при загрузке файла';
    53.         }
     
    #1 SamyRed, 8 июн 2017
    Последнее редактирование: 8 июн 2017
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.809
    Симпатии:
    1.332
    Адрес:
    Лень
    прочти мануал, прежде чем пихать директорию
     
    SamyRed и san4ez нравится это.
  3. san4ez

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

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    сразу скажу, могу ошибаться. а imagecopyresampled должна быть не после второго switch case? - ошибся =)
    --- Добавлено ---
    а ну да, там же не пути должны указываться
     
    SamyRed нравится это.
  4. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Всё, вопрос отпал. Передал объекты со старым изображением и с новым холстом. Всем спасибо!
     
  5. lastdays

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

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Будет досадно если выпрыгнет default на 12 строчке, а код ниже выполниться ..
    А я, выпилюсь, пожалуй)
     
  6. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну за пол года я успел это учесть :D