resize-upload-vytvorit nahlad-resize nahlad

Programovacie jazyky, rady, poradňa...
DeeJay3
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 254
Registrovaný: 22 dec 2008, 19:45
Kontaktovať používateľa:

resize-upload-vytvorit nahlad-resize nahlad

Príspevok od používateľa DeeJay3 »

cawte moze mi niekto pomoct..zhanal som nieco co pracuje na princime: vyber fotku uploadni(pri uploade ju zmensi ak je sirsia ako povolena hranica) potom zobrazi ten resiznuty obrazok a mam moznost vytvorit si nahlad cize oznacim plochu ktoru chcem v nahlade a ten sa mi ulozi...len ja potrebujem este dalsi treti obrazok...(velky stredny a maly)...takze s toho velkeho spravim nahlad to bude ten stredny a potreboval by som tam dokodit este resiznutie toho stredneho obrazku na urcitu sirku...len mam toho trocha us dost...kym som si to spravil podla seba ako som to potreboval tak mi to zabralo dost casu a este aj tak to neni poriadne...no nemosem si pomoct a to resiznutie mi nejak nejde...tu je zdrojak ktory uploadne obrazok resizne ho a vy mozete vybrat oblast ktoru chcete v nahlade a potom ten nahlad uploadnut k tomu resiznutemu originalu:
/****udaje pre treti obrazok****/ tam je hodnota na aku chcem zmensit ten nahlad terajsi ktory vytvara tento kod

Kód: Vybrať všetko

<?php
error_reporting (E_ALL ^ E_NOTICE);
session_start(); //Do not remove this
$id_hotel = $_GET['id_hotel'];
$action = $_GET['action'];
//Constants
//You can alter these options
switch($action){
		case '1'	:	$upload_dir = "hotel".$id_hotel; 			// The directory for the images to be saved in
						$upload_path = $upload_dir."/";								// The path to where the image will be saved
						$large_image_prefix = "resize_main"; 						// The prefix name to large image
						$middle_image_prefix = "middle_main";						// The prefix name to the thumb image
						$max_width = "800";												// Max width allowed for the large image
						$middle_width = "356";											// Width of middle image
						$middle_height = "234";											// Height of middle image
						/****udaje pre 3 obrazok*****/
						$thumb_width = "136";											// Height of thumbnail image
						/****udaje pre 3 obrazok*****/
}
$large_image_name = $large_image_prefix.".jpg";     // New name of the large image (append the timestamp to the filename)
$middle_image_name = $middle_image_prefix.".jpg";     // New name of the thumbnail image (append the timestamp to the filename)
$max_file = "3"; 							


//Image functions
//You do not need to alter these functions
function resizeImage($image,$width,$height,$scale) {
	$newImageWidth = ceil($width * $scale);
	$newImageHeight = ceil($height * $scale);
	$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
	$source = imagecreatefromjpeg($image);
	imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
	imagejpeg($newImage,$image,90);
	chmod($image, 0777);
	return $image;
}
//You do not need to alter these functions
function resizeMiddleImage($middle_image_name, $image, $width, $height, $start_width, $start_height, $scale){
	$newImageWidth = ceil($width * $scale);
	$newImageHeight = ceil($height * $scale);
	$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
	$source = imagecreatefromjpeg($image);
	imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height);
	imagejpeg($newImage,$middle_image_name,90);
	chmod($middle_image_name, 0777);
	return $middle_image_name;
}
//You do not need to alter these functions
function getHeight($image) {
	$sizes = getimagesize($image);
	$height = $sizes[1];
	return $height;
}
//You do not need to alter these functions
function getWidth($image) {
	$sizes = getimagesize($image);
	$width = $sizes[0];
	return $width;
}

//Image Locations
$large_image_location = $upload_path.$large_image_name;
$middle_image_location = $upload_path.$middle_image_name;

//Create the upload directory with the right permissions if it doesn't exist
if(!is_dir($upload_dir)){
	mkdir($upload_dir, 0777);
	chmod($upload_dir, 0777);
}

//Check to see if any images with the same names already exist
if (file_exists($large_image_location)){
	if(file_exists($middle_image_location)){
		$middle_photo_exists = "<img src=\"".$upload_path.$middle_image_name."\" alt=\"Thumbnail Image\"/>";
	}else{
		$middle_photo_exists = "";
	}
   	$large_photo_exists = "<img src=\"".$upload_path.$large_image_name."\" alt=\"Large Image\"/>";
} else {
   	$large_photo_exists = "";
	$middle_photo_exists = "";
}

if (isset($_POST["upload"])) { 
	//Get the file information
	$userfile_name = $_FILES['image']['name'];
	$userfile_tmp = $_FILES['image']['tmp_name'];
	$userfile_size = $_FILES['image']['size'];
	$filename = basename($_FILES['image']['name']);
	$file_ext = substr($filename, strrpos($filename, '.') + 1);
	
	//Only process if the file is a JPG and below the allowed limit
	if((!empty($_FILES["image"])) && ($_FILES['image']['error'] == 0)) {
		if (($file_ext!="jpg") || ($userfile_size > ($max_file*1048576))) { // UPDATED ERROR CHECK
			$error= "Iba jpeg súbory s veľkosťou menšou ako ".$max_file."MB su povolené";
		}
	}else{
		$error= "Vyberte obrázok typu jpeg(jpg) pre nahratie";
	}
	//Everything is ok, so we can upload the image.
	if (strlen($error)==0){
		
		if (isset($_FILES['image']['name'])){
			
			move_uploaded_file($userfile_tmp, $large_image_location);
			chmod($large_image_location, 0777);
			
			$width = getWidth($large_image_location);
			$height = getHeight($large_image_location);
			//Scale the image if it is greater than the width set above
			if ($width > $max_width){
				$scale = $max_width/$width;
				$uploaded = resizeImage($large_image_location,$width,$height,$scale);
			}else{
				$scale = 1;
				$uploaded = resizeImage($large_image_location,$width,$height,$scale);
			}
			//Delete the thumbnail file so the user can create a new one
			if (file_exists($middle_image_location)) {
				unlink($middle_image_location);
			}
		}
		//Refresh the page to show the new uploaded image
		header("location:".$_SERVER["PHP_SELF"]."?id_hotel=".$id_hotel."&action=".$action);
		exit();
	}
}

if (isset($_POST["upload_middle"]) && strlen($large_photo_exists)>0) {
	//Get the new coordinates to crop the image.
	$x1 = $_POST["x1"];
	$y1 = $_POST["y1"];
	$x2 = $_POST["x2"];
	$y2 = $_POST["y2"];
	$w = $_POST["w"];
	$h = $_POST["h"];
	//Scale the image to the thumb_width set above
	$scale = $middle_width/$w;
	$cropped = resizeMiddleImage($middle_image_location, $large_image_location,$w,$h,$x1,$y1,$scale);
	//Reload the page again to view the thumbnail
	header("location:".$_SERVER["PHP_SELF"]."?id_hotel=".$id_hotel."&action=".$action);
	exit();
}


if ($_GET['a']=="delete"){
//get the file locations 
	$large_image_location = $upload_path.$large_image_prefix.".jpg";
	$middle_image_location = $upload_path.$middle_image_prefix.".jpg";
	if (file_exists($large_image_location)) {
		unlink($large_image_location);
	}
	if (file_exists($middle_image_location)) {
		unlink($middle_image_location);
	}
	header("location:".$_SERVER["PHP_SELF"]."?id_hotel=".$id_hotel."&action=".$action);
	exit(); 
}
?>
<!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=utf-8" />
	<script type="text/javascript" src="js/jquery-1.4.min.js"></script>
	<script type="text/javascript" src="js/jquery.imgareaselect.min.js"></script>
	<script >
	function showInfo(){
		img = '<img src="subory/images/loading_upload.gif" border="0">';
		document.getElementById("showInfoDiv").innerHTML = img + "vydžte prosím, obrázok sa pripravuje k dalšiemu použitiu";
	}
	</script>
</head>
<body>
<?php
//Only display the javacript if an image has been uploaded
if(strlen($large_photo_exists)>0){
	$current_large_image_width = getWidth($large_image_location);
	$current_large_image_height = getHeight($large_image_location);?>
<script type="text/javascript">
function preview(img, selection) { 
	var scaleX = <?php echo $middle_width;?> / selection.width; 
	var scaleY = <?php echo $middle_height;?> / selection.height; 
	
	$('#middle + div > img').css({ 
		width: Math.round(scaleX * <?php echo $current_large_image_width;?>) + 'px', 
		height: Math.round(scaleY * <?php echo $current_large_image_height;?>) + 'px',
		marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px', 
		marginTop: '-' + Math.round(scaleY * selection.y1) + 'px' 
	});
	$('#x1').val(selection.x1);
	$('#y1').val(selection.y1);
	$('#x2').val(selection.x2);
	$('#y2').val(selection.y2);
	$('#w').val(selection.width);
	$('#h').val(selection.height);
} 

$(document).ready(function () { 
	$('#save_middle').click(function() {
		var x1 = $('#x1').val();
		var y1 = $('#y1').val();
		var x2 = $('#x2').val();
		var y2 = $('#y2').val();
		var w = $('#w').val();
		var h = $('#h').val();
		if(x1=="" || y1=="" || x2=="" || y2=="" || w=="" || h==""){
			alert("You must make a selection first");
			return false;
		}else{
			return true;
		}
	});
}); 

$(window).load(function () { 
	$('#middle').imgAreaSelect({ aspectRatio: '1:<?php echo $middle_height/$middle_width;?>', onSelectChange: preview }); 
});

</script>
<?php }?>
<h1>Photo Upload and Crop</h1>
<?php
//Display error message if there are any
if(strlen($error)>0){
	echo "<ul><li><strong>Error!</strong></li><li>".$error."</li></ul>";
}
if(strlen($large_photo_exists)>0 && strlen($middle_photo_exists)>0){
	echo $large_photo_exists."&nbsp;".$middle_photo_exists;
	echo "<p><a href=\"".$_SERVER["PHP_SELF"]."?id_hotel=".$id_hotel."&action=".$action."&a=delete\">Odstrániť / nahrať iný</a></p>";
}else{
		if(strlen($large_photo_exists)>0){?>
		<h2>Create Thumbnail</h2>
		<div align="center">
			<img src="<?php echo $upload_path.$large_image_name;?>" style="float: left; margin-right: 10px;" id="middle" alt="Create Thumbnail" />
			<div style="float:left; position:relative; overflow:hidden; width:<?php echo $middle_width;?>px; height:<?php echo $middle_height;?>px;">
				<img src="<?php echo $upload_path.$large_image_name;?>" style="position: relative;" alt="Thumbnail Preview" />
			</div>
			<br style="clear:both;"/>
			<form name="middle" action="<?php echo $_SERVER["PHP_SELF"]."?id_hotel=".$id_hotel."&action=".$action;?>" method="post">
				<input type="hidden" name="x1" value="" id="x1" />
				<input type="hidden" name="y1" value="" id="y1" />
				<input type="hidden" name="x2" value="" id="x2" />
				<input type="hidden" name="y2" value="" id="y2" />
				<input type="hidden" name="w" value="" id="w" />
				<input type="hidden" name="h" value="" id="h" />
				<input type="submit" name="upload_middle" value="Uložiť náhľad" id="save_middle" />
			</form>
		</div>
	<hr />
	<?php 	} 
	if(strlen($large_photo_exists)>0){
		echo "<h2>Nahrať iný obrázok</h2>";
	}
	else{
		echo "<h2>Nahrať obrázok</h2>";
	}
?>
	
	<form name="photo" enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]."?id_hotel=".$id_hotel."&action=".$action;?>" method="post">
	obrázok <input type="file" name="image" size="30" /> <input type="submit" name="upload" value="Nahrať obrázok" onclick="showInfo()"/>
	</form>
	<?php echo '<div id="showInfoDiv"></div>';?>
<?php } ?><br>
<a href="registracia_hotel.php?id_hotel=<?php echo $id_hotel?>">späť do profilu</a>
</body>
</html>
chcem aby spolu s uploudnutim nahladu (toho stredneho obrazku) sa resizol a ulozil sa dalsi obrazok este mensi(teda tento stredny zmenseny na na zaciatku definovanu sirku)...v prilohe su subory JS..(ak by si niekto myslel ze som sa nesnazil tak snazil ale to co som spravil som tu radsej nedal aby som niekoho nezmiatol takze iba zaklad)

//autoeditácia príspevku (02 Jún 2010, 19:15)
tak riešenie mojho problemu...nakoniec som si to spravil :)
za $cropped = resizeMiddleImage($middle_image_location, $large_image_location,$w,$h,$x1,$y1,$scale);
dopisat

Kód: Vybrať všetko

	$filename = $middle_image_location;
	$percent = $thumb_width/$middle_width;

	list($widtht, $heightt) = getimagesize($filename);
	$new_widtht = $thumb_width;
	$new_heightt = $middle_height * $percent;

	$image_p = imagecreatetruecolor($new_widtht, $new_heightt);
	$image = imagecreatefromjpeg($filename);
	imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_widtht, $new_heightt, $widtht, $heightt);

	imagejpeg($image_p, $thumb_image_location, 100);
Prílohy
js.zip
(25.7 KiB) 28 stiahnutí
Napísať odpoveď