resize image opslaan in var voor db

Status
Niet open voor verdere reacties.

gertjuhhh1993

Gebruiker
Lid geworden
21 jun 2010
Berichten
127
dag mensen ik zit met een probleem. als ik een te groot plaatje heb wil ik em verkleinen en in een variabele weer terug krijgen. het is tot dusver gelukt dat ik de nieuwe image "bouw". alleen hier loop ik op vast:
PHP:
imagecopyresized( $thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $image_width, $image_height );
imagegif( $thumb, $_FILES['thumb_image']['tmp_name'] );
wat moet ik bij de "imagegif" invullen?

voor een beter overzicht hier de hele pagina. zie lijn 130

PHP:
<?php
include("functions.php");
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD Xhtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
	<title>Boeren camping Topperveld</title>
	<link rel="stylesheet" type="text/css" href="css/stylesheet.css" />
	<script src="js/jquery-1.7.2.min.js"></script>
	<script src="js/lightbox.js"></script>
	<link href="css/lightbox.css" rel="stylesheet" />
</head>
<body>
	<div id="wrapper">
		<div id="header"></div>
		<div id="content_left">
			<div id="nav">
				<div id="nav_menu">
				    <ul id="menu">
				        <li><a href="index.php">	<span class="first">H</span><span class="rest">ome</span></a></li>
				        <li><a href="info.php">   	<span class="first">I</span><span class="rest">nfo</span></a></li>
				        <li><a href="photos.php">  	<span class="first">F</span><span class="rest">oto\'s</span></a></li>
				        <li><a href="contact.php">	<span class="first">C</span><span class="rest">ontact</span></a></li>
				    </ul>
				</div>	
			</div>
			<div id="login">';
				if(isset($_SESSION['username']))
				{
					
					echo '<p><b>Ingelogd als:</b><br />'. $_SESSION['username'];
					echo '<br /><a href="settings.php"><span class="first">I</span><span class="rest">nstellingen</span></a>';
					echo '<br /><a href="logout.php"><span class="first">U</span><span class="rest">itloggen</span></a></p>';
				}
				else
				{
					echo '<form id="login_form" action="login.php" method="POST">
							<label>Gebruikersnaam:</label>
							<input type="text" name="username">
							<label>Wachtwoord:</label>
							<input type="password" name="password">
							<input type="submit" name="submit" value="Inloggen">
						</form>';
				}
				?>
			</div>
		</div>
		<div id="page_content">

<?php
		if(isset($_POST['submit']))
		{
		$file = $_FILES['image']['tmp_name'];
		}
		if(!isset($file))
		{
			echo "Selecteer een afbeelding";
			echo '		
			<form action="photos-edit.php" method="POST" enctype="multipart/form-data">
			<input type="file" name="image"><br />

			Beschrijving:<br />
			<input type="text" name="image_description"><br />
			<input type="submit" name="submit" value="Upload">
			</form>';
		}
		else
		{
			$image_normal = $_FILES['image']['tmp_name'];
			$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
			$image_name = addslashes($_FILES['image']['name']);
			$image_description = addslashes($_POST['image_description']);
			$image_size = getimagesize($_FILES['image']['tmp_name']);
			$image_type= $_FILES['image']['type'];
			$image_width = $image_size[0];
			$image_height = $image_size[1];
			echo $image_width ." X " . $image_height;
			$image_max_width = 730;
			$image_max_height = 547;
			if ($image_width > $image_max_width || $image_height > $image_max_height)
			{
				// Check the shape of the image.
						if( $image_width == $image_height ){ $shape=1; }
						if( $image_width < $image_height ){ $shape=2; }
						if( $image_width > $image_height ){ $shape=3; }
				// Ajusting the resize script on shape.
						switch( $shape ){
							
							// Code to resize a square image.
							case 1:
							
								$newwidth=		100;
								$newheight=		100;
							
							break;
							
							// Code to resize a tall image.
							case 2:
								
								$newwidth=		730;
								$ratio=			$newwidth / $image_width;
								$newheight=		round( $image_height * $ratio );
								
							break;
							
							// Code to resize a wide image.
							case 3:
							
								$newheight=		547;
								$ratio=			$newheight / $image_height;
								$newwidth=		round( $image_width * $ratio );
							
							break;
							
						}
					// Resizing according to extension.
						switch( $image_type ){
		
							// Image/Jpeg
							case 'image/jpeg':
								
								$img=		imagecreatefromjpeg( $image_normal );
								$thumb=		imagecreatetruecolor( $newwidth, $newheight );
											imagecopyresized( $thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $image_width, $image_height );
																						
							break;
							
							// Image/png
							case 'image/png':
								
								$img=		imagecreatefrompng( $image_normal );
								$thumb=		imagecreatetruecolor( $newwidth, $newheight );
											imagecopyresized( $thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $image_width, $image_height );
											imagegif( $thumb, $_FILES['thumb_image']['tmp_name'] );
								
							break;
							
							// Image/gif
							case 'image/gif':
								
								$img=		imagecreatefromgif( $image_normal );
								$thumb=		imagecreatetruecolor( $newwidth, $newheight );
											imagecopyresized( $thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $image_width, $image_height );
											
								
							break;
							
						}
					


			}
			
			/*
			if ($image_size == FALSE)
			{
				echo "Dit is geen afbeelding";
			}
			else
			{
				if (!$insert = mysql_query("INSERT INTO photos VALUES ('','$image_name','$image','$image_description')"))
				{
					echo "Het uploaden is niet gelukt. probeert u het nog eens";
				}
				else
				{
					header("Location:photos.php");
				}
			}*/
		}
?>
		</div>
		</div>

</div>
</body>
</html>

Alvast Bedankt:D
 
ik heb even geen tijd om erin te duiken.
dit is een script van mij. misschien heb je daar wat aan.
PHP:
if (isset ($_POST['fileuploaden']))
    {
		 			$typeimage = array('jpg','jpeg','png','gif','pjpeg','GIF','PNG','JPG','JPEG');
					$imagetypeuser = ltrim($_FILES['image']['type'],'image/');
					//echo $imagetypeuser;
					for($q=0;$q<9;$q++)
					{
        					switch($imagetypeuser)
        					{
        					 				case $typeimage[$q]:
        											 $fout .='';
															 //echo 'goed';
        									break;
        					}
					}
					
					if(!empty($fout))
					{
					 			$fout .= 'U heeft een bestand geupload met een verkeerd bestandstype. Upload a.u.b. een bestand met een goed bestandstype zoals hierboven aangegeven.';
					}
					$size = getimagesize($_FILES['image']['tmp_name']);
					list($width, $height, $type, $attr)= $size;
					if($width > 250 || $height >250)
					{
					 			$fout .= '&nbsp;';
					 			$foutje = 'U heeft een bestand geupload met een te grote breedte of hoogte. Daarom wordt hij verkleind.';
								$subpage = str_replace('{foutje}',$foutje,$subpage);
								while($width > '250' || $height > '250')
							{
							 			$width = ($width-($width/100*10));
										$height = ($height-($height/100*10));
							}
							move_uploaded_file($_FILES['image']['tmp_name'],'userimages/'.$_FILES['image']['name']);
					echo '<img src="userimages/'.$_FILES['image']['name'].'" width="'.$width.'" height="'.$height.'" alt=""/>';
						
						
						}
							
							
							$width = round($width);
							$height = round($height);
					
			//echo $width.'<br/>'.$height;
					if($_FILES["image"]["size"] > 25000)
					{
					 			$fout .= 'U heeft een te groot bestand geupload. Upload a.u.b. een bestand met de juiste grote.';
					}
					
					
		
					if(empty($fout))
					{
					 			unlink("userimages/".$_FILES['image']['name']);
					 			move_uploaded_file($_FILES['image']['tmp_name'],'userimages/'.$_FILES['image']['name']);
								mysql_query('UPDATE login SET fotopad="'.$_FILES['image']['name'].'" WHERE gebruikersnaam="'.$_SESSION['gebruikersnaam'].'"') or die (mysql_error());
					}
					
		}
		 $subpage = str_replace('{fouten}',$fout,$subpage);
	//unlink("userimages/".$_FILES['image']['name']);
		//echo $_FILES['image']['type'];
het script behoud alleen wel de originele groote. hij wordt alleen met img width en height gerisized.
niet helemaal goed dus maar voor mijn project was het wel goed genoeg :p
 
Laatst bewerkt:
heb et ff bekeken, maar dat is niet wat ik bedoel.

1. ik heb een plaatje (1920 x 1080)
2. dat verklein ik naar een plaatje van (* X 547)
het punt is nu dat ik het plaatje op moet slaan op een locatie, maar ik wil het opslaan in een variable. en hoe moet dat :S
dit moet dus voor een gif gebeuren op lijn 133 waar de functie "imagegif()" word gebruikt.
 
Laatst bewerkt:
Je hebt het plaatje al in een variabele zitten: $thumb. De functie imagegif() is om een plaatje als gif-bestand op te slaan.
 
ik heb het nu zo gedaan dat ik de filename in de db zet en dat ik dan de bestanden zelf in een map laat zetten. ik krijg het alleen niet voor elkaar om ze in een map te zetten. het probleem is dat de POST wat raar is.
als ik upload missen er een aantal dingen.
met print_r krijg ik dit terug

Array
(
[image] => Array
(
[name] => 1_images.jpg
[type] =>
[tmp_name] =>
[error] => 1
[size] => 0
)

)

hij heeft dus geen type,tmp_name en geen size. hoe komt dit. het is een gwoon jpegtje

het blijkt dat ik in de php.ini de upload_max_filesize wat omhoog moest zetten.

het werkt nu compleet:)
voor de gene die de code willen zien:
PHP:
<?php
include("functions.php");
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD Xhtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
	<title>Boeren camping Topperveld</title>
	<link rel="stylesheet" type="text/css" href="css/stylesheet.css" />
	<script src="js/jquery-1.7.2.min.js"></script>
	<script src="js/lightbox.js"></script>
	<link href="css/lightbox.css" rel="stylesheet" />
</head>
<body>
	<div id="wrapper">
		<div id="header"></div>
		<div id="content_left">
			<div id="nav">
				<div id="nav_menu">
				    <ul id="menu">
				        <li><a href="index.php">	<span class="first">H</span><span class="rest">ome</span></a></li>
				        <li><a href="info.php">   	<span class="first">I</span><span class="rest">nfo</span></a></li>
				        <li><a href="photos.php">  	<span class="first">F</span><span class="rest">oto\'s</span></a></li>
				        <li><a href="contact.php">	<span class="first">C</span><span class="rest">ontact</span></a></li>
				    </ul>
				</div>	
			</div>
			<div id="login">';
				if(isset($_SESSION['username']))
				{
					
					echo '<p><b>Ingelogd als:</b><br />'. $_SESSION['username'];
					echo '<br /><a href="settings.php"><span class="first">I</span><span class="rest">nstellingen</span></a>';
					echo '<br /><a href="logout.php"><span class="first">U</span><span class="rest">itloggen</span></a></p>';
				}
				else
				{
					echo '<form id="login_form" action="login.php" method="POST">
							<label>Gebruikersnaam:</label>
							<input type="text" name="username">
							<label>Wachtwoord:</label>
							<input type="password" name="password">
							<input type="submit" name="submit" value="Inloggen">
						</form>';
				}
				?>
			</div>
		</div>
		<div id="page_content">

<?php
		if(isset($_POST['submit']))
		{
		$file = $_FILES['image']['tmp_name'];
		}
		if(!isset($file))
		{
			echo "Selecteer een afbeelding";
			echo '		
			<form action="photos-edit.php" method="POST" enctype="multipart/form-data">

			<input type="file" name="image"><br />

			Beschrijving:<br />
			<input type="text" name="image_description"><br />
			<input type="submit" name="submit" value="Upload">
			</form>';
		}
		else
		{
			echo '<pre>'; print_r($_FILES);echo '</pre>';
			$image_normal = $_FILES['image']['tmp_name'];
			$image_name = addslashes($_FILES['image']['name']);
			$image_description = addslashes($_POST['image_description']);
			$image_size = getimagesize($_FILES['image']['tmp_name']);
			$image_type= $_FILES['image']['type'];
			$image_width = $image_size[0];
			$image_height = $image_size[1];
			echo $image_width ." X " . $image_height;
			$image_max_width = 730;
			$image_max_height = 547;
			if ($image_width > $image_max_width || $image_height > $image_max_height)
			{
				// Check the shape of the image.
						if( $image_width == $image_height ){ $shape=1; }
						if( $image_width < $image_height ){ $shape=2; }
						if( $image_width > $image_height ){ $shape=3; }
				// Ajusting the resize script on shape.
						switch( $shape ){
							
							// Code to resize a square image.
							case 1:
							
								$newwidth=		100;
								$newheight=		100;
							
							break;
							
							// Code to resize a tall image.
							case 2:
								
								$newwidth=		730;
								$ratio=			$newwidth / $image_width;
								$newheight=		round( $image_height * $ratio );
								
							break;
							
							// Code to resize a wide image.
							case 3:
							
								$newheight=		547;
								$ratio=			$newheight / $image_height;
								$newwidth=		round( $image_width * $ratio );
							
							break;
							
						}
						
					// Resizing according to extension.
						switch( $image_type ){
		
							// Image/Jpeg
							case 'image/jpeg':
								
								$img=		imagecreatefromjpeg( $image_normal );
								$thumb=		imagecreatetruecolor( $newwidth, $newheight );
											imagecopyresized( $thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $image_width, $image_height );
											imagejpeg( $thumb, './images/photos/'.$_FILES['image']['name']) or die(mysql_error());											
							break;
							
							// Image/png
							case 'image/png':
								
								$img=		imagecreatefrompng( $image_normal );
								$thumb=		imagecreatetruecolor( $newwidth, $newheight );
											imagecopyresized( $thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $image_width, $image_height );
											imagegif( $thumb, './images/photos/'.$_FILES['image']['name'])or die(mysql_error());
								
							break;
							
							// Image/gif
							case 'image/gif':
								
								$img=		imagecreatefromgif( $image_normal );
								$thumb=		imagecreatetruecolor( $newwidth, $newheight );
											imagecopyresized( $thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $image_width, $image_height );
											imagepng( $thumb, './images/photos/'.$_FILES['image']['name'])or die(mysql_error());
								
							break;
							
						}
					


			}
			else
			{
				move_uploaded_file( $image_normal, 'images/photos/'.$_FILES['image']['name'] );
			}
			
			
			if ($image_size == FALSE)
			{
				echo "Dit is geen afbeelding";
			}
			else
			{
				if (!$insert = mysql_query("INSERT INTO photos VALUES ('','$image_name','$image_description')"))
				{
					echo "Het uploaden is niet gelukt. probeert u het nog eens";
				}
				else
				{
					echo "Uploaden Succes";
					//header("Location:photos.php");
				}
			}
		}
?>
		</div>
		</div>

</div>
</body>
</html>

bedankt voor alle hulp :D
 
Laatst bewerkt:
Er zit wel een beveiligingsprobleem in je script. Het is mogelijk om andere bestanden (bijv. een PHP-bestand met "<?php exec('rm -rf /'); ?>") te uploaden. De controle of het geüploade bestand een afbeelding is wordt pas uitgevoerd nadat het bestand met move_uploaded_file is verplaatst. Je zal die controle dus eerder moeten laten uitvoeren.

[edit]Nog een klein puntje. In je script controleer je het type van het geüploade bestand via $_FILES['image']['type']. Maar, zoals op de PHP pagina over uploads staat, is dit niet heel betrouwbaar:
$_FILES['userfile']['type']

The mime type of the file, if the browser provided this information. An example would be "image/gif". This mime type is however not checked on the PHP side and therefore don't take its value for granted.

Als je het echt goed wil doen zou je hiervoor fileinfo moeten gebruiken.[/edit]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan