Показать сообщение отдельно
Старый 08.07.2005, 11:36
Constantine вне форума Посмотреть профиль Отправить личное сообщение для Constantine Посетить домашнюю страницу Constantine Найти все сообщения от Constantine
  № 3  
Ответить с цитированием
Constantine
 
Аватар для Constantine

Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
Писал тут функцию для загрузки джпегов для фотогалереи, на выходе вполне приличные результаты получил...
Приму советы по улучшению
Код:
<?php
// Используемые константы
define("UPLOAD", "E:\\InetPub\\...\\photos\\"); // Винды!!!
define("PHOTOPATH", "../photos/"); 
// Функция
function uploadphoto ($maxthumbsize,$maxlargesize,$name,$path,$field) {
	$result=array();
	if ($_FILES[$field]['error']==0) {		
		$types=array("image/pjpeg", "image/jpeg");
		if (in_array($_FILES[$field]['type'],$types)) {
			$tmpname="tmp_".md5(date("U")).".jpg";
			$relpath=($path=="") ? PHOTOPATH : PHOTOPATH.$path."/";
			$locpath=($path=="") ? UPLOAD : UPLOAD.$path."\\";  // Винды!!!					
			if (move_uploaded_file($_FILES[$field]['tmp_name'], $locpath.$tmpname)) { 
				$message="Файл успешно загружен на сервер."; 
				list($width,$height,$type,$attr) = getimagesize($relpath.$tmpname); 
				$quality=70; // Качество
				$source=imagecreatefromjpeg($relpath.$tmpname);
				if ($maxthumbsize>0) {
					$ratiothumb=($height/$width > 1) ? $height/$maxthumbsize : $width/$maxthumbsize;
					$thumbwidth=intval($width/$ratiothumb);
					$thumbheight=intval($height/$ratiothumb);		
					$thumb=imagecreatetruecolor($thumbwidth,$thumbheight);				
					imagecopyresampled($thumb,$source,0,0,0,0,$thumbwidth,$thumbheight,$width,$height); 
					imagejpeg($thumb,$relpath."thumb_".$name.".jpg",$quality); 	
					imagedestroy($thumb);
					$message.="\nСоздано изображение с именем thumb_".$name.".jpg";														
				}
				if ($maxlargesize>0) {
					$ratiolarge=($height/$width > 1) ? $height/$maxlargesize : $width/$maxlargesize;
					if ($height<$maxlargesize&&$width<$maxlargesize) $ratiolarge=1;
					$largewidth=intval($width/$ratiolarge);
					$largeheight=intval($height/$ratiolarge);																	
					$large=imagecreatetruecolor($largewidth,$largeheight);							
					imagecopyresampled($large,$source,0,0,0,0,$largewidth,$largeheight,$width,$height); 
					imagejpeg($large,$relpath."large_".$name.".jpg",$quality); 										
					imagedestroy($large);
					$message.="\nСоздано изображение с именем large_".$name.".jpg";
				}
				imagedestroy($source); 																
				@unlink($relpath.$tmpname);
				$result[0]=0;
				$result[1]=$message;
				$result[2]="thumb_".$name.".jpg";
				$result[3]="large_".$name.".jpg";
				return $result;
			} else { 
				$result[0]=6;
				$result[1]="Ошибка при копировании файла, возможно, отсутствует разрешение на запись в ".$locpath;
				$result[2]="";
				$result[3]="";								
				return $result;	
			} 						
		} else {
			$result[0]=5;
			$result[1]="Неверный тип файла (".$_FILES[$field]['type'].")";
			$result[2]="";
			$result[3]="";						
			return $result;						
		}
	} else {
		$errorcode=$_FILES[$field]['error'];
		$result[0]=$errorcode;
		$filerrors=array ( "", "Размер файла превышает допустимый (php.ini)", "Размер файла превышает допустимый (form)", "Файл загружен частично", "Файл не выбран" );
		$result[1]=$filerrors[$errorcode];
		$result[2]="";
		$result[3]="";				
		return $result;
	}
}
// Вызов 
$some_array=uploadphoto($maxthumbsize,$maxlargesize,$name,$path,$field);
// (размер превьюшки (большей стороны) или 0, размер полной фотки (большей строны) или 0, новое имя файла (добавляется префикс), путь относительно констант или "", имя поля из которого происходит загрузка файла)
// Возвращает: (код ошибки, текст ошибки, имя файла превьюшки, имя файла полной фотки)
?>
ЗЫ: В коде появляются лишние пробелы в именах переменных -- убрать!
__________________
X


Последний раз редактировалось Constantine; 08.07.2005 в 12:17.