Почему то в цикле уменьшается только первая картинка и выводится ошибка. Подскажите в чем проблема? PHP: <?php $root = 'L:'; $folder = '/scrin'; //Папка с файлами $array_file = scandir($root.$folder); //Масcив с именами файлов foreach($array_file as $name_file){ // Наш цикл if (!is_dir($root.$folder.'/'.$name_file)){ /* $w_o и h_o - ширина и высота выходного изображения */ function resize($image, $w_o = false, $h_o = false) { if (($w_o < 0) || ($h_o < 0)) { echo "Некорректные входные параметры"; return false; } list($w_i, $h_i, $type) = getimagesize($image); // Получаем размеры и тип изображения (число) $types = array("", "gif", "jpeg", "png"); // Массив с типами изображений $ext = $types[$type]; // Зная "числовой" тип изображения, узнаём название типа if ($ext) { $func = 'imagecreatefrom'.$ext; // Получаем название функции, соответствующую типу, для создания изображения $img_i = $func($image); // Создаём дескриптор для работы с исходным изображением } else { echo 'Некорректное изображение'; // Выводим ошибку, если формат изображения недопустимый return false; } /* Если указать только 1 параметр, то второй подстроится пропорционально */ if (!$h_o) $h_o = $w_o / ($w_i / $h_i); if (!$w_o) $w_o = $h_o / ($h_i / $w_i); $img_o = imagecreatetruecolor($w_o, $h_o); // Создаём дескриптор для выходного изображения imagecopyresampled($img_o, $img_i, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i); // Переносим изображение из исходного в выходное, масштабируя его $func = 'image'.$ext; // Получаем функция для сохранения результата return $func($img_o, $image); // Сохраняем изображение в тот же файл, что и исходное, возвращая результат этой операции } /* Вызываем функцию с целью уменьшить изображение до ширины в 100 пикселей, а высоту уменьшив пропорционально, чтобы не искажать изображение */ resize($root.$folder.'/'.$name_file, 250); //Записываем новое имя }else{ echo "Ошибка переименования файла $name_file<br/>"; // это тоже } } ?>
Ошибка переименования файла . Ошибка переименования файла .. Fatal error: Cannot redeclare resize() (previously declared in Z:\home\localhost\www\izmen_raz.php:10) in Z:\home\localhost\www\izmen_raz.php on line 10
А теперь попробуйте текст ошибки перевести на русский. Серьезно. Там черным по белому написано, прям вот точно в чем ошибка, и откуда растут ее ноги.
Фатальная ошибка: невозможно переопределить Размер() (ранее объявленный в Да но как это понять и исправить?
Ахахахаахаххах аха зааазазха --- Добавлено --- Ну начнём с того, что создание функции в цикле это агонь.
У вас есть цикл с пятой строки начинается. А еще у вас в теле цикла есть объявление функции. С 11 строки начинается. При первой итерации цикла все ок, функция создалась, и даже отработала. На второй итерации происходит попытка создания этой функции снова, а так нельзя. Не может быть две функции с одной сигнатурой. В итоге все падает после первой итерации. Решение? Не объявлять функцию в цикле. --- Добавлено --- Ну или обратиться к автору скрипта, чтобы он объяснил, какого лешего у него такая адулька. Потому что автор скрипта не вы. Вы php впервые в жизни видите. --- Добавлено --- Мне еще вот это нравится: --- Добавлено --- И это тоже просто прекрасно. Входные параметры придуманы для слабаков. PHP: if ($ext) { $func = 'imagecreatefrom'.$ext; // Получаем название функции, соответствующую типу, для создания изображения $img_i = $func($image); // Создаём дескриптор для работы с исходным изображением } --- Добавлено --- Мне прям даже хочется заглянуть глубже под капот. Там наверняка пахнет карри.