Hallo.

ben nu bezig met een script om een avatar te uploaden...
het lukt aardig.
alles werkt, maar er is nog 1 ding wat ik mis.
ik wil graag dat de afmetingen maar 150x150 zijn....

hoe kan ik dat doen?

Alvast bedankt.
[google]php image 150x150[/google]. Is it really that hard?
Hmm

hoe kan ik zo toe passen bij wat ik nu heb? :S

want in vele functies zitten al file chekkers enz...


wat ik nu heb:

if ((
($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/GIF")
|| ($_FILES["file"]["type"] == "image/JPEG")
|| ($_FILES["file"]["type"] == "image/JPG")
|| ($_FILES["file"]["type"] == "image/PNG")
)){
if ($_FILES["file"]["size"] < 800000){
  if ($_FILES["file"]["error"] > 0){
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }else{


    if (file_exists("images/users/" . $_FILES["file"]["name"])){
      echo $_FILES["file"]["name"] . " already exists. ";
      }else{
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "images/users/" . $_FILES["file"]["name"]);
      }
    }
	}else{
  echo "Uw bestand is te groot.<br>";
  }
  }else{
  echo "bestand type is niet geldig.<br>";
  }
}

((
($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/GIF")
|| ($_FILES["file"]["type"] == "image/JPEG")
|| ($_FILES["file"]["type"] == "image/JPG")
|| ($_FILES["file"]["type"] == "image/PNG")
)){

Daar kun je gewoon met geen mogelijkheid op vertrouwen. Gebruik daar liever getimagesize voor. Als daar niets zinnigs uitkomt weet je gelijk zeker dat PHP het niet ondersteunt. Daarnaast had je voor iets dergelijks beter in_array kunnen gebruiken :).

Heb je wel eens met de GD-functies gewerkt? Kijk anders een naar imagecopyresampled, dat is wat je zoekt geloof ik.


if (file_exists("images/users/" . $_FILES["file"]["name"])){
echo $_FILES["file"]["name"] . " already exists. ";
Waarom maak je er niet gewoon een unieke filename van?

ok ik ben bezig met de array.

het lukt niet helemaal, ik heb de volgende tut gebruikt:
http://phphulp.nl/php/tutorials/4/226/413/

wat ik nu heb:

$array = array('image/gif','image/gif','image/jpg','image/png','image/GIF','image/JPEG','image/JPG','image/PNG');
if(in_array($_FILES["file"]["type"],$array)){


maar hij zegt bij alles dat het bestand geen geldige typen is.
dus ik neem aan dat er wat verkeerd is?

nee, ik weet niet wat een GD-Functie is.
werk zelf nooit met functies wat ik me wel moet gaan aan leren omdat het veel werk gaat schelen...

Misschien dat ik dat idd ook ga doen.
Waarom staat er dubbel 'image/gif' in?
Soms hebben mensen fotos .GIF dat kan zo zijn dat de fotos van bepaalde camera's komen, vandaar heb ik het in grote letters en kleine letters.
maar hij zegt bij alles dat het bestand geen geldige typen is.
dus ik neem aan dat er wat verkeerd is?
Ja, dat neem ik ook aan... Volgens mij had ik je al verteld dat je niet kunt vertrouwen op het type wat de browser meestuurt. Ik zou gewoon eens met getimagesize-functie proberen. Dan kun je wat meer zien.
En afgezien daarvan doe je het ook nog op een totaal ineffectieve manier:
<?php
if(in_array(strtolower($_POST['file']['type']), Array('image/jpeg', 'image/png', 'image/gif')); # Het bestand is volgens de browser een image. Maar controleer dat altijd zelf nog een keertje :D
?>

werk zelf nooit met functies wat ik me wel moet gaan aan leren omdat het veel werk gaat schelen...
Tsjonge, ik ben hier op het forum net beginner-af. Maar volgens mij kunnen we wat dat betreft beter ruilen... :)
[google]PHP create thumbnails[/google]. Dat geeft je meer informatie dan ik je ooit van mijn leven kan geven.
Voor het werken met plaatjes heb je in PHP de Imagick class. Voorbeeld:

<?php
	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
		if ($_FILES['error'] == 0) {
			$tmp = $_FILES['userfile']['tmp_name'];
			if (is_uploaded_file ($tmp)) {
				$name = preg_replace ('/[^a-zA-z\.]/', '', $_FILES['userfile']['name']);
				$path = $_SERVER['DOCUMENT_ROOT'] . '/gfx/';
				if (move_uploaded_file ($tmp, $path . $name)) {
					$msg = '<p>Geupload: ' . $name . '</p>';
					$msg .= '<p><img src="gfx/' . $name . '" /></p>';
					
					$img = new Imagick ($path . $name);
					$img->scaleImage (150, 150);
					$img->writeImage ($path . $name);
					$img->destroy ();
					// hier moet absoluut beveiling tegen MySQL injection op
					// dus minstens mysql_real_escape_string () over $name heen halen
					$sql = "
						INSERT INTO tabelnaam
						(filename)
						VALUES
						('" . $name . "')
					";
					$msg .= '<pre>' . print_r (htmlentities ($sql), true) . '</pre>';
				}
			}
		}
	}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>PHP Image Upload</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		
		<style type="text/css" media="screen">
			div#container						{margin: 30px auto; width: 500px; padding: 10px;}
			
			input,
			div#container						{font: 11px "Lucida Sans Unicode";}
			h1									{font: bold 11px "Lucida Sans Unicode";}		
		</style>
	</head>
	
	<body>
		<div id="container">
			<h1>PHP Image Upload</h1>
			<?php
				if (isset ($msg)) {
					echo $msg;
				}
			?>
			<form method="post" action="image_upload.php" enctype="multipart/form-data">
				<div>
					<input id="userfile" name="userfile" type="file" />
					<input type="submit" value="upload" />
				</div>
			</form>
		</div>
	</body>
</html>

Reageren