Ik wil hetvolgende:
Via een formulier kiest iemand een foto. De foto wordt geupload naar een map. Vanuit hier wordt het twee keer verkleind. Een keer naar 200x150 pixels, en een keer naar 500x375 pixels.
(Of 150x200 en 375x500 als de foto rechtop genomen is)
Ik heb de volgende code, en die werkt bijna helemaal goed, alleen bij beide verkleinigen neemt hij alleen de linkerbovenhoek van het orginele plaatje in plaats van het hele plaatje . Heb het meeste van dit script trouwens van deze geweldige site. Beetje aangepast naar mijn wensen
Wat doe ik fout zodat hij niet de hele foto verkleind?
En hoe kan ik de orginele foto die in Temp wordt geupload weer verwijderen als de verkleiningen klaar zijn?
<?
// hieronder de test
if (isset($_FILES['plaatje1'])) {
$_FILES['bestand'] = $_FILES['plaatje1'];
//de variabellen
$maxsize = 302400; //maximale grote in bytes
$file_name = "tijdelijk"; //naam van de foto
$map = "verslag/temp/"; //mapnaam. Vergeet de / niet op het einde
//De groote van het bestand vergelijken met het maximum toegelaten
if ($_FILES['bestand']['type'] > $maxsize){
exit("Je bestand " . $_FILES['bestand']['size'] . " bytes, het maximum toegelaten is " . $maxsize . " bytes");
}
//checken of het wel een jpg is
if($_FILES['bestand']['type'] == "image/pjpeg") {
//de extensie van het bestand in een variabelle gooien
$x = strtolower(substr($_FILES['bestand']['name'], -3));
$n = 0;
// Check of het plaatje al bestaat, zo ja, filename verhogen
while (file_exists($map . $file_name . $n . '.' . $x))
{
$n = $n + 1;
}
$file_name = $file_name . $n;
//het bestand verplaatsen naar de opgegeven map en hernoemen naar de opgegeven filenaam
move_uploaded_file($_FILES['bestand']['tmp_name'],$map . $file_name . '.' . $x);
//bestand chmodden(is alleen van belang voor linux webserver)
chmod ($map . $file_name . '.' . $x, 0777);
//$width = 100; //maximale breedte, in pixels, van de thumbnail
$thumb = "verslag/thumbs/" . $file_name . '.' . $x; //de map waar de thumbnails in komen(alleen tussen de quotes veranderen)
$groot = "verslag/plaatje/" . $file_name . '.' . $x;
$orig = $map . $file_name . '.' . $x;
//het plaatje gaan verkleinen
$b = imagecreatefromjpeg($map . $file_name . '.' . $x) or die ("Jpg probleempje");
$bx = imagesx($b); //breedte van het orgineel
$by = imagesy($b); //hoogte van het orgineel
if ($bx > $by) { $width = 200;
$widthgroot = 500; }
if ($bx < $by) { $width = 150;
$widthgroot = 375; }
$lm = $b;
// Kleine plaatje
//hoogte uit rekennen
$temp=$bx/$width;
$height=$by/$temp;
//het plaatje gaan maken
$lm1 = imagecreate($width ,$height) or die ("Probleem met maken van plaatje");
//als je geen GD library 2 hebt moet je imagecopyresampled veranderen in imagecopyresized(lagere kwaliteit)
imagecopyresampled($lm1, $lm, 0, 0, 0, 0, $width, $height, $bx, $by);
//80 is jpg kwaliteit maar je kan ook tot 120 gaan of lager dan 80
Imagejpeg($lm1,$thumb,80);
//de troep opruimen
//imageDestroy($lm1);
//imageDestroy($lm);
// Groote plaatje
$temp=$bx/$widthgroot;
$height=$by/$temp;
$lm = $b;
//het plaatje gaan maken
$lm1 = imagecreate($widthgroot ,$height) or die ("Probleem met maken van plaatje");
//als je geen GD library 2 hebt moet je imagecopyresampled veranderen in imagecopyresized(lagere kwaliteit)
imagecopyresampled($lm1, $lm, 0, 0, 0, 0, $widthgroot, $height, $bx, $by);
//80 is jpg kwaliteit maar je kan ook tot 120 gaan of lager dan 80
Imagejpeg($lm1,$groot,80);
//de troep opruimen
imageDestroy($lm1);
imageDestroy($lm);
echo "Het plaatje is succesvol opgeslagen";
//error printen als het geen jpg is
} else {
echo "Het bestands formaat word niet ondersteund.<br> Alleen jpg word toegelaten.";
}
} else {
echo "Kies een plaatje (alleen jpg).";
}
?>
dit is hetzelfde script van sima aangepast aan mij behoeft.
upload wordt gerisezed naar 800 x 600 opgeslagen als image.jpg
en 100 x 75 opgeslagen als image_thumb.jpg