Приветствую Вас, Гость! Регистрация RSS

Мой сайт

Воскресенье, 10.11.2024
Главная » 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>
Просмотров: 1370 | Добавил: adminprg | Теги: php, resize, jpg, код, kode, pic | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]