
прапор творюет
   
Награды: 1
Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg
Репутация: 8 Всего: 315
|
использую это: Код | function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $proportion=false, $quality=100) { if(!file_exists($src)) return false; $size = getimagesize($src); if($size === false) return false; if($proportion === true) { $h0 = $height; $height = ($width/$size[0])*$size[1]; if($height > $h0) { $height = $h0; $width = ($height/$size[1])*$size[0]; }} if($width > $size[0]) $width = $size[0]; if($height > $size[1]) $height = $size[1]; $format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1)); $icfunc = 'imagecreatefrom'.$format; if(!function_exists($icfunc)) return false; $x_ratio = $width/$size[0]; $y_ratio = $height/$size[1]; $ratio = min($x_ratio, $y_ratio); $use_x_ratio = ($x_ratio == $ratio); if($use_x_ratio) { $new_width = $width; $new_left = 0; } else { $new_width = floor($size[0] * $ratio); $new_left = floor(($width - $new_width) / 2); } if(!$use_x_ratio) { $new_height = $height; $new_top = 0; } else { $new_height = floor($size[1] * $ratio); $new_top = floor(($height - $new_height) / 2); } $isrc = $icfunc($src); $idest = imagecreatetruecolor($width, $height); if(is_array($dest)) { $nd = explode('.', $src); $ndc = count($nd); $nd[$ndc - 2] .= $dest[0]; $dest = implode('.', $nd); } imagefill($idest, 0, 0, $rgb); imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]); imagejpeg($idest, $dest, $quality); imagedestroy($isrc); imagedestroy($idest); return $dest; }
function upLoader($userfile, $uploaddir = 'upload', $save = 'image', $data = array(160, 120, true, 100), $copy = 'true', $newname = '') { global $mistake, $BASE_DIR; $temp = $_FILES[$userfile]['tmp_name']; $name = $_FILES[$userfile]['name']; echo $name; $size = $_FILES[$userfile]['size']; $type = $_FILES[$userfile]['type']; $error = $_FILES[$userfile]['error']; $b = false; if(strlen($name) > 3) { $type = strtolower(substr($name, -4)); } else $type = ''; if(!empty($newname)) { $name = $newname; if(strlen($name) > 3) { $type1 = strtolower(substr($name, -4)); } else $type1 = ''; if($save == 'image' && $type != $type1) { if($type == '.jpg' || $type == '.gif' || $type == '.png') { $name .= $type; } elseif($type == 'jpeg') { $name .= '.'.$type; } } } if($error > 0) { $mistake = 'Загрузка не выполнена: '.$name.' '; switch($error) { case 1: $mistake .= 'размер файла больше upload_max_filesize'; break; case 2: $mistake .= 'размер файла больше max_file_size'; break; case 3: $mistake .= 'загружена только часть файла'; break; case 4: $mistake .= 'файл не загружен'; break; } return $b; } $upfile = $uploaddir.'/'.$name; @mkdir($uploaddir, 0755); if(is_uploaded_file($temp)) { if(!move_uploaded_file($temp, $upfile)) { $mistake = 'Невозможно переслать файл в каталог назначения'; return $b; }} else { $mistake = 'Возможно атака через загрузку файла. Файл: '.$name; return $b; } $mistake = 'Файл успешно загружен '.$name; $res = strstr($upfile, '../'); if($res) { $res1 = explode('../', $upfile); $upfile = $res1[1]; } $b = $upfile; if(strstr($b, $BASE_DIR)) { $a = strlen($BASE_DIR); $b = substr($upfile, $a); } if($save == 'image' and $copy == 'true') { $b = img_resize($b, array('_small'), $data[0], $data[1], '', $data[2], $data[3]); } return $b; } |
использовать так: 1. в форме пишем два поля: Код | <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="pict" /> <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> ...
|
второе поле - одно на всю форму, указывает максимальный объём пересылаемых данных 2. в обработчике пхп, пишем: Код | $res = upLoader('pict', 'catalog'); |
, где первый параметр - имя поля, второй - папка, куда сохранить в $res получаем путь сохранённой картинки. далее там много опций, которыми можно и не пользоваться. сам разберёшься может конечно и не работать, так как выдрано из контекста, но функции рабочие
|