Доброе утро. Почему-то не работает функция, не могу понять upload.php Код (Text): <?php[/B] [B]include 'functions.php'; $path = 'images/'; //Путь до папки $types = array('image/gif', 'image/png', 'image/jpeg'); //типы echo '<pre>'; $img = $_FILES['img']; $type = $img['type']; $size = 10000; $tmp_path = 'tmp/'; if ($_SERVER['REQUEST_METHOD'] == 'POST') { if(empty(array_intersect($types, $type))) { print_r($type); die('Данный тип файла фотографий не поддерживается. Вернитесь назад и выберите фотографию с друугим разрешением .jpeg, .gif или .png '); } if(!empty($img)) { $img_desc = reArrayFiles($img); foreach($img_desc as $val) { $newname = date('YmdHis',time()).mt_rand().'.jpg'; $name = resize($_FILES['img'], $_POST['file_type'], $_POST['file_rotate']); // Проверяем размер файла if (filesize($path) > $size){ die('Слишком большой размер файла. <a href="?">Попробовать другой файл?</a>'); } if (copy($val['tmp_name'], $path .$newname .$name )){ echo '<p>Загрузка прошла удачно <a href="' . $path . $newname .'">Посмотреть</a>.</p>'; } else { echo 'Произошла ошибка'; } } } } Функция Код (Text): function resize($img, $type = 1, $rotate = null, $quality = null)[/B] [B] { global $tmp_path; // Ограничение по ширине в пикселях $max_thumb_size = 800; $max_size = 1800; // Качество изображения по умолчанию if ($quality == null) $quality = 50; // Cоздаём исходное изображение на основе исходного файла if ($_FILES['img']['type'] == 'image/jpeg') $source = imagecreatefromjpeg($file['tmp_name']); elseif ($_FILES['img']['type'] == 'image/png') $source = imagecreatefrompng($file['tmp_name']); elseif ($_FILES['img']['type'] == 'image/gif') $source = imagecreatefromgif($file['tmp_name']); else return false; // Поворачиваем изображение if ($rotate != null) $src = imagerotate($source, $rotate, 0); else $src = $source; // Определяем ширину и высоту изображения $w_src = imagesx($src); $h_src = imagesy($src); // В зависимости от типа (эскиз или большое изображение) устанавливаем ограничение по ширине. if ($type == 1) $w = $max_thumb_size; elseif ($type == 2) $w = $max_size; if ($type == 2) $quality = '30'; // Если ширина больше заданной if ($w_src > $w) { // Вычисление пропорций $ratio = $w_src/$w; $w_dest = round($w_src/$ratio); $h_dest = round($h_src/$ratio); // Создаём пустую картинку $dest = imagecreatetruecolor($w_dest, $h_dest); // Копируем старое изображение в новое с изменением параметров imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src); // Вывод картинки и очистка памяти imagejpeg($dest, $tmp_path . $img['name'], $quality); imagedestroy($dest); imagedestroy($src); return $img['name']; } else { // Вывод картинки и очистка памяти imagejpeg($src, $val['tmp_name'], $img['name'], $quality); imagedestroy($src); return $img['name']; } }
учитесь пошаговой отладке ... не работает - понятие растяжимое, на каком шаге не работает определили? что именно не то? чесно гвооря тут почти каждая строка спорная ))) так что гадать как то сложно
тут пишут начинающие, если что подсказывай правильный вариант, или просто ссылку на тот же https://secure.php.net/manual/ru/control-structures.switch.php
я вот так делаю выбор типа PHP: //Определяем его размер $sizeImg = getimagesize ($imgIn); //Формат изображения удаляя лишнее из [mime] => image/gif $formatImg = strtolower(substr($sizeImg['mime'], strpos($sizeImg['mime'], '/')+1)); //создание текста для вызова функции например imagecreatefrom+jpg $imgFunc = "imagecreatefrom" . $formatImg; //Проверка наличия функции if (!function_exists($imgFunc)) { return FALSE; } //с помощью текста созданной функции вызываем саму функцию и создаем объект изображения в памяти. $imgSrc = $imgFunc($imgIn);
ошибся. имел ввиду тип ... да их мало, но они есть просто сотнях тыщах файлов и не заметите что десяток другой не отработает
Ни черта не выходит который день.. Код (Text): if ($_SERVER['REQUEST_METHOD'] == 'POST') { if(empty(array_intersect($types, $type))) { print_r($type); die('Данный тип файла фотографий не поддерживается. Вернитесь назад и выберите фотографию с друугим разрешением .jpeg, .gif или .png '); } if(!empty($img)) { $img_desc = reArrayFiles($img); foreach($img_desc as $val) { $newname = date('YmdHis',time()).mt_rand().'.jpg'; // Проверяем размер файла if (filesize($path) > $maxsize){ die('Слишком большой размер файла. <a href="?">Попробовать другой файл?</a>'); } $name = resize($img, $_POST['file_type'], $_POST['file_rotate']); print_r($name); if (copy($val['tmp_name'], $path .$name .$newname .$name)){ echo '<p>Загрузка прошла удачно <a href="' . $path . $newname .'">Посмотреть</a>.</p>'; } else { echo 'Произошла ошибка'; } Код (Text): function resize($file, $type = 1, $rotate = null, $quality = null) { global $tmp_path; // Ограничение по ширине в пикселях $max_thumb_size = 200; $max_size = 600; // Качество изображения по умолчанию if ($quality == null) $quality = 75; // Cоздаём исходное изображение на основе исходного файла if ($file['type'] == 'image/jpeg') $source = imagecreatefromjpeg($file['tmp_name']); elseif ($file['type'] == 'image/png') $source = imagecreatefrompng($file['tmp_name']); elseif ($file['type'] == 'image/gif') $source = imagecreatefromgif($file['tmp_name']); else return false; // Поворачиваем изображение if ($rotate != null) $src = imagerotate($source, $rotate, 0); else $src = $source; // Определяем ширину и высоту изображения $w_src = imagesx($src); $h_src = imagesy($src); // В зависимости от типа (эскиз или большое изображение) устанавливаем ограничение по ширине. if ($type == 1) $w = $max_thumb_size; elseif ($type == 2) $w = $max_size; // Если ширина больше заданной if ($w_src > $w) { // Вычисление пропорций $ratio = $w_src/$w; $w_dest = round($w_src/$ratio); $h_dest = round($h_src/$ratio); // Создаём пустую картинку $dest = imagecreatetruecolor($w_dest, $h_dest); // Копируем старое изображение в новое с изменением параметров imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src); // Вывод картинки и очистка памяти imagejpeg($dest, $tmp_path . $file['name'], $quality); imagedestroy($dest); imagedestroy($src); return $file['name']; } else { // Вывод картинки и очистка памяти imagejpeg($src, $tmp_path . $file['name'], $quality); imagedestroy($src); return $file['name']; } }
А более подробно? Зачем ты проверяешь метод запроса? Есть интересная функция для поиска mime типов картинок - in_array. Гугли. Не понял зачем array_intersect используешь.