We proberen het al een tijdje. Maar krijgen het niet voor elkaar om een script te schrijven voor platjes gerescaled tussen een aantal waardes. Wie weet toevallig waar ik zo'n script kan vinden?
Ik heb er nog wel ergens een, moment.
Hier staat genoeg in om je op weg te helpen.

<?php
$img = 'plaatje.jpg';
$dimensions = getimagesize ($img);
$width = $dimensions[0];
$height = $dimensions[1];

$small_width = 64;
$medium_width = 128;
$large_width = 512; // het maximum ligt richting 800

$ratio_small = $small_width / $width;
$ratio_medium = $medium_width / $width;
$ratio_large = $large_width / $width;

$small_height = intval ($ratio_small * $height);
$medium_height = intval ($ratio_medium * $height);
$large_height = intval ($ratio_large * $height);

// small
$src = imagecreatefromjpeg ($img);
$dst_small = imagecreatetruecolor ($small_width, $small_height);
imagecopyresampled ($dst_small, $src, 0, 0, 0, 0, $small_width, $small_height, $width, $height);
$name_small = str_replace ('.jpg', '_small.jpg', $img);
imagejpeg ($dst_small, $name_small, 85);
imagedestroy ($dst_small);

$name_small = basename ($name_small);
echo "<p>small: $small_width x $small_height<br><img src=\"pics/$name_small\"></p>";

// medium
$dst_medium = imagecreatetruecolor ($medium_width, $medium_height);
imagecopyresampled ($dst_medium, $src, 0, 0, 0, 0, $medium_width, $medium_height, $width, $height);
$name_medium = str_replace ('.jpg', '_medium.jpg', $img);
imagejpeg ($dst_medium, $name_medium, 85);
imagedestroy ($dst_medium);

$name_medium = basename ($name_medium);
echo "<p>medium: $medium_width x $medium_height<br><img src=\"pics/$name_medium\"></p>";

// large
$dst_large = imagecreatetruecolor ($large_width, $large_height);
imagecopyresampled ($dst_large, $src, 0, 0, 0, 0, $large_width, $large_height, $width, $height);
$name_large = str_replace ('.jpg', '_large.jpg', $img);
imagejpeg ($dst_large, $name_large, 85);
imagedestroy ($dst_large);

$name_large = basename ($name_large);
echo "<p>large: $large_width x $large_height<br><img src=\"pics/$name_large\"></p>";

imagedestroy ($src);
?>
@Jan: Blijven de hoogte-breedte verhoudingen gelijk?
@Sebastiaan: dat is inderdaad het uitgangspunt en blijkt ook te werken in de sites waar ik dit script gebruik.
Lol. hoe lang werken jullie eigenlijk met PHP?
Hier mijn thumbscriptje hij kijkt alleen naar de breedte zodat de verhouding gelijk blijft:

<?
$map = "./plaatjes/";
$thumb_map = $map."thumbs/";
$max_grootte = 160;

function thumbnail($naam, $map, $max_grootte)
{
$ext = strtolower(end(explode(".", $naam)));
if(@imagecreatefromgif($naam))
{
$afbeelding = imagecreatefromgif($naam);
$ext_r = "gif";
}
elseif(@imagecreatefromjpeg($naam))
{
$afbeelding = imagecreatefromjpeg($naam);
$ext_r = "jpg";
}
elseif(@imagecreatefrompng($naam))
{
$afbeelding = imagecreatefrompng($naam);
$ext_r = "png";
}
elseif(@imagecreatefromwbmp($naam))
{
$afbeelding = imagecreatefromwbmp($naam);
$ext_r = "bmp";
}
else
{
return "Ongeldige Extentie";
}

$ext = ($ext == "") ? $ext_r : "";

$breedte = imagesx($afbeelding);
$hoogte = imagesy($afbeelding);

if($breedte >= $hoogte)
{
$factor = $max_grootte / $breedte;
$breedte_nieuw = $max_grootte;
$hoogte_nieuw = $hoogte * $factor;
}
else
{
$factor = $max_grootte / $hoogte;
$hoogte_nieuw = $max_grootte;
$breedte_nieuw = $breedte * $factor;
}

$afbeelding_n = imagecreatetruecolor($breedte_nieuw, $hoogte_nieuw);
imagecopyresampled($afbeelding_n, $afbeelding, 0, 0, 0, 0, $breedte_nieuw, $hoogte_nieuw, $breedte, $hoogte);
imagejpeg($afbeelding_n, $map, 100);

if($ext == "gif")
{
imagegif($afbeelding_n, $map, 100);
}
elseif($ext == "jpg")
{
imagejpeg($afbeelding_n, $map, 100);
}
elseif($ext == "png")
{
imagepng($afbeelding_n, $map, 100);
}
elseif($ext == "bmp")
{
imagewbmp($afbeelding_n, $map, 100);
}
imagedestroy($afbeelding_n);
return true;
}
// Gebruiken

thumbnail($map . $naam, $thumb, $max_grootte);

?>

Reageren