[php & Gd] Thumb maken met vierkante achtergrond

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • kokorico
  • Registratie: Januari 2004
  • Nu online
Met de onderstaande functie die ik heb gemaakt , kun ik makkelijk thumbs aanmaken. Echter, de hoogte wordt evenredig aangepast met de breedte om vervorming tegen te gaan.

Nu wil ik thumb aanmaken van 400 x 400 px met een witte achtergrond (of transparant?) met daarop de kleine versie van de foto.

Voorbeeld: http://www.speurders.nl/s...z.g.a.n.&sp_photo_count=1

Zo zijn alles fotos van omvang even groot.
Hoe kan ik dit doen met onderstaande functtie?

De berekeningen om de hoogte en de breedte van de foto aan te passen op de achtergrond maak ik wel.

Alvast bedankt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
function maakthumb($map_inp,$map_out, $file_in, $file_out, $nwidth, $nheight)
{
  
$map = $map_inp;
$th_map = $map_out;
$bestandsnaam = $file_in;

//orignele bestand openen
$file = $map . $bestandsnaam;

//breedte en hoogte opvragen en bewaren in $width en $height
list($width, $height,$type) = getimagesize($file);

if (empty($nheight))
{

if ($nwidth > $width)

{
$nheight = floor(($nwidth / $width) * $height);
}
elseif ($nwidth < $width)

{
$nheight = floor($height / ($width / $nwidth));
}
elseif ($nwidth == $width)
{
$nheight = $height;
}
}

if ($nheight > 600)
{
$nheight = 590;
} 


if ($type == 2)
{
//aanmaken nieuwe plaatje
$pic        =    ImageCreateTrueColor($nwidth, $nheight);

//orignele plaatje openen
$cpyImage    =     ImageCreateFromJPEG($file);
}
elseif($type == 1)
{
//aanmaken nieuwe plaatje
$pic        =    ImageCreate($nwidth, $nheight);

//orignele plaatje openen
$cpyImage    =     ImageCreateFromGIF($file);
}

//bestandsnaam van het nieuwe plaatje
$file_nw = $th_map.$bestandsnaam;

imagecopyresampled($pic,$cpyImage,0,0,0,0, $nwidth,$nheight,$width, $height);

if ($type == 2)
{
//aanmaken jpg
ImageJPEG($pic,$file_nw);
}
elseif($type == 1)
{
ImageGIF($pic,$file_nw);
}


//memory clearen
imagedestroy($cpyImage);
//memory cleaten
imagedestroy($pic); 

}

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 09:55

Bosmonster

*zucht*

Bereken de ratio's van de afbeelding en kijk dus hoe de afbeelding geresized moet worden. Kopieer hem vervolgens naar een nieuwe afbeelding in het midden.

Acties:
  • 0 Henk 'm!

Verwijderd

Zie de documentatie bij functie imagecopyresampled. Als je voorziet in een juiste doel-rectangle (parameters 3 t/m 6) komt het helemaal goed.