Главная » 2009 Декабрь 21 » Загрузка jpg в php с изменением размеров (код)
00:54 Загрузка jpg в php с изменением размеров (код) |
про нюансы здесь ниже код (можно создать файлик test.php и проэксперементировать): ============================================ <?php // сохраняем вывод в буфер ob_start(); $mbMax=2; //максимальный размер картинки в мегабайтах $max_image_size = $mbMax*1000*1024; //пересчет мб в байты $msg='Максимальный размер(MAX_FILE_SIZE) в байтах = '.$max_image_size; $valid_types=array("jpg", "jpeg"); $newMax=600; $new_name ='ris2.jpg'; //будущее имя файла на сервере $pub="./img/"; //папка на сервере, в которую будем сохранять!!!!ВНИМАНИЕ: должен быть относительный путь if (isset($_FILES["userfile"])) { //проверка на ошибки при загрузке файла на сервер во временную папку if($_FILES['userfile']['error'] > 0) { switch ($_FILES['userfile']['error']) { case 1: $msg.='Размер принятого файла превысил максимально допустимый размер, который задан директивой <font style="color:#0000ff"><u>upload_max_filesize</u></font> конфигурационного файла php.ini'; break; case 2: $msg.='Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме'; break; case 3: $msg.='Загружаемый файл был получен только частично'; break; case 4: $msg.='Файл не был загружен'; break; } }else{ $msg.= 'Ошибок не возникало, файл был успешно загружен на сервер во временную директорию.<br>Попытаемся сохранить файл в нужной директории (отредактировав, если это необходимо)<hr>'; }; //конец проверки на ошибки if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { $filename = $_FILES['userfile']['tmp_name']; //строковое значение полного пути картинки с именем во в ременной папке $ext = substr($_FILES['userfile']['name'], 1 + strrpos($_FILES['userfile']['name'], ".")); //проверяем не превышает ли картинка размер в мб if (filesize($filename) > $max_image_size) { $msg.= 'Error: Размер файла > MAX_FILE_SIZE'; } elseif (!in_array($ext, $valid_types)){ //проверяем является ли расширение файла jpg $msg.= 'Error: Invalid file type, Файл не является картинкой в формате jpg.'; }else { //обработка картинки $size = getimagesize($filename); if ($size) { $w = $size[0]; $h = $size[1]; $msg.='size loading (x,y):'.$w.','.$h.'<br><hr>'; $msg.= '<br>Попытка - запись файла как: '.$pub.$new_name.'<br>'; //предварительно удалим файл, если с таким именем уже существует if (file_exists($pub.$new_name)) { unlink ($pub.$new_name); }; //анализ ширины и высоты загружаемого изображения $new_h=$size[1]; $new_w=$size[0]; //если ширина превышает допустимую if($new_w>$newMax) { $in=round($size[0]/$newMax); $new_w=round($size[0]/$in); //высчитываем новую ширину (допустимую) $new_h=round($size[1]/$in); //высчитываем новую высоту (допустимую), для пропорционалного сжатия }; //если высота превышает допустимую if ($new_h>$newMax) { $in=round($new_h/$newMax); $new_w=round($new_w/$in); //высчитываем новую ширину (допустимую), для пропорционалного сжатия $new_h=round($new_h/$in); //высчитываем новую высоту (допустимую) }; $msg.='<br>Размер новой картинки ='.$new_w.'x'.$new_h; // создаем новую картинку с конечными данными ширины и высоты $newImage = imagecreatetruecolor($new_w,$new_h); //открываем исходную картинку (хранящуюся уже на сервере во временной папке) $newfile=imagecreatefromjpeg($filename); // копируем filename (исходная) в newImage (конечную) //изменяем размер исходной картинки сохраняем как newImage imagecopyresized($newImage, $newfile, 0, 0, 0, 0, $new_w, $new_h, $size[0], $size[1]); //сохраняем картинку на сервере в нужной нам папке с нужным нам именем. imagejpeg($newImage,$pub.$new_name,100); <br> $msg.='<br>картинкa как бы сохранена'; $msg.='<br><img src="'.$pub.$new_name.'" width='.$new_w.' height='.$new_h.' />'; //очищаем буфер imagedestroy( $newImage ); imagedestroy( $bigfile ); ob_end_clean(); }else { $msg.='Error: файл не соотвествует параметрам загрузки.'; }; } } else { $msg.="<br>Error: нет файла для загрузки."; } } else { $msg.=' <br><form enctype="multipart/form-data" method="post"> <br> <input type="hidden" name="MAX_FILE_SIZE" value="'.$max_image_size.'"> <br> Выберете файл: <input name="userfile" id="myImg" type="file"> <br> <input type="submit" value="Send File"> </form>'; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" > <title>test load img</title> </head> <body> <?php echo $msg;?> </body> </html> |
|
Всего комментариев: 0 | |