Hallo, ik ben een PHP beginner, en loop tegen het volgende probleem aan:

Ik wil van een jpeg een thumbnail maken. Dit lukt mij wel met imagecopyresized maar de output wordt naar de browser verstuurd. Ik heb lang lopen zoeken in verschillende tuts maar heb tot dusver nog niet gevonden wat ik zoek. Ik wil dus dat de gescalede jpeg op de server wordt gezet, zodat ik als ik een serie thumbnails wil laten zien niet alle plaatjes realtime moet gaan rescalen, maar gewoon een van te voren een gescalede versie van de server kan plukken.

Alle input is van harte welkom en alvast bedankt,
ok dat klopt, ik heb de dir ge CHOD 777 end. Ik kan de plaatjes dus ook wel oploaden of moet ik niet 777en?
ik maak een image aan door het productnr. + _s.jpg (voor thumbnail) en prod. nr. _1 voor groot plaatje. Deze komen in de dir terecht (bijv. 4_s.jpg en een kopie 4_1.jpg) nu is het de bedoeling 4_s.jpg te rescalen naar 120 x 120 formaat. Hier gaat het dus mis
voor de liefhebber: ik heb het script enigzins aangepast naar mijn wensen, en het is voor mij een erg nuttige aanpassing, dus misschien ook voor andere mensen. Ik heb niet aangepast alleen het volgende ingebouwd. Als je bijvoorbeeld een plaatje upload en die wilt rescalen met behoud van de verhoudingen, bijvoorbeeld je wilt een plaatje dat breder is dan lang aanpassen om de maximale breedte of lengte van 500 te krijgen:

<?php
resize('img.jpg', 'img.jpg', 500, 500);
?>

De functie kijkt wat de langste zijde is en maakt die 500 pixels, de korte zijde wordt in verhouding meegescaled


<?php
function resize($filename, $dest, $width, $height, $type=''){
if(@imagecreatefromgif($filename)){
$img=imagecreatefromgif($filename);
$type_r='gif';
}
elseif(@imagecreatefromjpeg($filename)){
$img=imagecreatefromjpeg($filename);
$type_r='jpg';
}
elseif(@imagecreatefrompng($filename)){
$img=imagecreatefrompng($filename);
$type_r='png';
}
elseif(@imagecreatefromwbmp($filename)){
$img=imagecreatefromwbmp($filename);
$type_r='bmp';
}
else{
return 'Cannot open file';
}
$type=($type=='')?$type_r:'';

// breder dan lang
$x = imagesx($img);
$y = imagesy($img);
if ($x > $y) {
$division = $y / $x;
$height = $height * $division; }
// langer dan breed
if ($y > $x) {
$division = $x / $y;
$width = $width * $division; }

$img_n=imagecreatetruecolor ($width, $height);
imagecopyresampled($img_n, $img, 0, 0, 0, 0, $width, $height, imagesx($img), imagesy($img));
if($type=='gif'){
imagegif($img_n, $dest);
}
elseif($type=='jpg'){
imagejpeg($img_n, $dest);
}
elseif($type=='png'){
imagepng($img_n, $dest);
}
elseif($type=='bmp'){
imagewbmp($img_n, $dest);
}
Return true;
}
error_reporting(E_ALL);
?>

Reageren