Квартиры, дома, земельные участки Краснодарского края без посредников. Объявления собственников недвижимости.
Реклама здесь
Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Передача изображения на сервер через форму, изменение его размера и сохранение на диск

После заполнения элементов формы, изображение передается на сервер в переменной pURL. Проверка корректности заполнениия формы на стороне клиента удалена для упрощения примера. Примеры проверки Вы найдете в разделе примеров javascript. После проверки типа изображения оно сохраняется из временного файла в указанную папку с привязкой к записи в базе. Для упрощения примера работа с базой исключена из рассмотрения. Дальше с помощью функции Resize изображение уменьшается с сохранением пропорций и приводится к формату jpeg.


<?php
// определяю папку, куда буду складывать полученные изображения
define("path_image",'/pic/');

if(isset(
$_REQUEST['name'])){
   
// сохраняю в базу и получаю $id записи, для привязки изображения к этой записи
   
if($fil=SaveFile('pURL','p'.$id)){
        
// $fil - имя файла изображения
        // 320 - максимальный размер в пикселях
       
Resize($fil,'p'.$id,320);
   }
}
?>
// не использую "ACTION=", т.к. передаю изображение текущему файлу-обработчику
<FORM enctype='multipart/form-data' METHOD="POST" onSubmit="return validator(this);">    
Ф.И.О.: <input style="WIDTH: 99%" name="name" /><br>
Фото: <input type='file' name='pURL' size=60 /><br>
<center><input style="WIDTH: 100px" type=submit value="Отправить!"></center>
</form>

<script language="javascript">
// проверка правильности заполнения формы
function validator(theForm) {return true;}
</script> 

<?
// сохранение фото
function SaveFile($purl,$filename){
 if(isset(
$_FILES[$purl]['name'])){
   
$pURL    =$_FILES[$purl]['tmp_name'];
   
$pURL_type    =$_FILES[$purl]['type'];
   
$pURL_name    =$_FILES[$purl]['name'];
   
//print"<br>".$purl."   ".$filename;print_r($_FILES);
   
if (!empty($pURL_name)&&$_FILES[$purl]['error'])
       print 
"Ошибка(<b>".$_FILES[$purl]['error']."</b>) загрузки файла <b>".$pURL_name."</b> на сервер!";
   elseif (isset(
$pURL_type) && ($pURL_type!=''))
       {if (
$pURL_type=='image/gif'||$pURL_type=='image/jpeg'||$pURL_type=='image/pjpeg'||$pURL_type=='image/png')
       {
$nname=$_SERVER['DOCUMENT_ROOT'].path_image.$filename.'.'.GetExt($pURL_name);
            if ( 
move_uploaded_file($pURL$nname) )
               print 
"Сохранил в ".$nname; return $nname;
            else print 
"Не смог сохранить ".$pURL." в ".$nname;
       }
      elseif (
$pURL!='')  print "Неверный тип $pURL_type";
    }

}

function 
GetExt($file){ // возвращает расширение файла
$ext=strtolower(substr(strrchr(basename($file), '.'),1));
switch ( 
$ext ){
   case 
'jpeg': case 'jpg':
    return 
'jpg';
   case 
'gif':
    return 
$ext;
   case 
'png':
    return 
$ext;
   default:
    return 
false;
}}

// изменение размера с сохранением пропорций изображения
function Resize($img,$target,$max){
// $img - с полным путем, $target без пути, $max - максим. размер
$width=$max;
$height=$max;

switch ( 
$ext=GetExt($img) ){
   case 
'jpg':
    
$srcImage = @ImageCreateFromJPEG($img);
    break;
   case 
'gif':
    
$srcImage = @ImageCreateFromGIF($img);
    break;
   case 
'png':
    
$srcImage = @ImageCreateFromPNG($img);
    break;
   default:
    die(
'Неверный формат файла изображения!');
}
$srcWidth ImageSX($srcImage);
$srcHeight ImageSY($srcImage);
if((
$width $srcWidth) || ($height $srcHeight))
{
    
$ratioWidth $srcWidth/$width;
    
$ratioHeight $srcHeight/$height;
    if(
$ratioWidth $ratioHeight)
       {
    
$destWidth intval($srcWidth/$ratioHeight);
    
$destHeight $height;
       }
    else
       {
    
$destWidth $width;
    
$destHeight intval($srcHeight/$ratioWidth);
       }
    
// на этапе отладки вывожу получившийся размер
    
echo "Width=".$destWidth." Height="$destHeight;
    
$resImage ImageCreateTrueColor($destWidth$destHeight);
    
ImageCopyResampled($resImage$srcImage0000$destWidth$destHeight$srcWidth$srcHeight);
    
$target=$_SERVER['DOCUMENT_ROOT'].path_image.$target.'.jpg';    

    
ImageJPEG($resImage$target100); // 100 - максимальное качество

    
ImageDestroy($srcImage);
    
ImageDestroy($resImage);
}}
?>
Скопировать в буфер
Кедровые бочки фитобочки, кедровые бочки. Овальные фитобочки и кедровые бочки.
Продажа авто, запчастей - транспортные компании самары. Рейтинг Банков 2011.
быстрая перевозка животных по Москве

© Copyright 2008-2012 by KDG