Schalen van thumbnails op basis van waarde in databank
Ik ben zowat nieuw in php, kwam hier een tijdje geleden al met een vraag. Ik stoot nu op een "probleem"...
schets:
in databank worden foto (link naar foto) (veld: foto) en de bijhorende afmetingen geplaatst (veld: width, veld: height).
wat ik wil doen is deze afbeeldingen schalen naar thumbnails op basis van de ingevoerde waardes in de databank. Als height > width dan moet hoogte 120px zijn, indien niet moet breedte 120px zijn...
Ik veronderstel dus dat het in mensentaal iets is als:
if height > width then echo height="120px", else echo width="120px"
Ik slaag er echter niet in om dit in code te doen werken. Can iemand me helpen op basis van deze code?
<img src="" width="160" height="120" border="0" />
breedt is dus $row_Recordset1['width']
hoogte $row_Recordset1['height']
Alvast bedankt!
Groet,
Code (php)
zo even uit mn hoofd gedaan, kunnen miss kleine foutjes in staan, denk dat het wel werkt.
hoop dat dit is wat je zoek
Gewijzigd op 25/08/2010 08:15:38 door Vincent Huisman
dit script. Daar kan je met een extra $_GET parameter werken om de hoogte of de breedte mee te geven. Dan gaan je pagina's ook sneller laden ;)
Met vriendelijke groeten,
Jens
edit:
Ik gebruik een script dat lang geleden al is gemaakt, maar ongeveer hetzelfde doet:
Je maakt je thumbnails op een verkeerde manier. Thumbs zorgen er voor dat een pagina met veel afbeeldingen sneller laadt door de afbeeldingen te verkleinen. Dit moet niet met HTML gebeuren, want dan wordt nog steeds de hele afbeelding ingeladen. Neem eens een kijkje naar Met vriendelijke groeten,
Jens
edit:
Ik gebruik een script dat lang geleden al is gemaakt, maar ongeveer hetzelfde doet:
Code (php)
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
error_reporting(E_ALL);
if(isset($_GET['photo']) && !empty($_GET['photo']) && (isset($_GET['sizemax']) || (isset($_GET['maxwidth']) && isset($_GET['maxheight']))))
{
$Dimensions = getimagesize('images/' . $_GET['photo']);
$CurWidth = $Dimensions[0];
$CurHeight = $Dimensions[1];
if(isset($_GET['sizemax']))
{
if($CurWidth > $CurHeight && $CurWidth >= stripslashes($_GET['sizemax']))
{
$Proportion = $CurHeight / $CurWidth;
$NewWidth = stripslashes($_GET['sizemax']);
$NewHeight = $NewWidth * $Proportion;
}
elseif($CurWidth == $CurHeight && $CurWidth >= stripslashes($_GET['sizemax']))
{
$Proportion = $CurHeight / $CurWidth;
$NewWidth = stripslashes($_GET['sizemax']);
$NewHeight = $NewWidth * $Proportion;
}
elseif($CurHeight > $CurWidth && $CurHeight >= stripslashes($_GET['sizemax']))
{
$Proportion = $CurWidth / $CurHeight;
$NewHeight = stripslashes($_GET['sizemax']);
$NewWidth = $NewHeight * $Proportion;
}
else
{
$NewWidth = $Dimensions[0];
$NewHeight = $Dimensions[1];
}
}
elseif(isset($_GET['maxwidth']))
{
if($CurWidth > $CurHeight && $CurWidth >= stripslashes($_GET['maxwidth']))
{
$Proportion = $CurHeight / $CurWidth;
$NewWidth = stripslashes($_GET['maxwidth']);
$NewHeight = $NewWidth * $Proportion;
}
elseif($CurHeight > $CurWidth && $CurHeight >= stripslashes($_GET['maxheight']))
{
$Proportion = $CurWidth / $CurHeight;
$NewHeight = stripslashes($_GET['maxheight']);
$NewWidth = $NewHeight * $Proportion;
}
elseif($CurWidth == $CurHeight && $CurWidth >= stripslashes($_GET['maxwidth']))
{
$Proportion = $CurHeight / $CurWidth;
$NewWidth = stripslashes($_GET['maxwidth']);
$NewHeight = $NewWidth * $Proportion;
}
else
{
$NewWidth = $Dimensions[0];
$NewHeight = $Dimensions[1];
}
}
if(strtolower(substr($_GET['photo'], -3)) == 'png')
{
header('content-type: image/png');
// Het bestand inlezen
$Image = imagecreatefrompng('images/' . $_GET['photo']);
// Nieuwe afbeelding maken
$Destination = imagecreatetruecolor($NewWidth, $NewHeight);
// Huidige afbeelding op de nieuwe afbeelding plaatsen
imagecopyresampled($Destination, $Image, 0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight);
// Afbeelding weergeven
imagepng($Destination);
// Ingelezen bron verwijderen
imagedestroy($Image);
}
elseif(strtolower(substr($_GET['photo'], -3)) == 'jpg')
{
header('content-type: image/jpeg');
// Het bestand inlezen
$Image = imagecreatefromjpeg('images/' . $_GET['photo']);
// Nieuwe afbeelding maken
$Destination = imagecreatetruecolor($NewWidth, $NewHeight);
// Huidige afbeelding op de nieuwe afbeelding plaatsen
imagecopyresampled($Destination, $Image, 0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight);
// Afbeelding weergeven
imagejpeg($Destination);
// Ingelezen bron verwijderen
imagedestroy($Image);
}
elseif(strtolower(substr($_GET['photo'], -4)) == 'jpeg')
{
header('content-type: image/jpeg');
// Het bestand inlezen
$Image = imagecreatefromjpeg('images/' . $_GET['photo']);
// Nieuwe afbeelding maken
$Destination = imagecreatetruecolor($NewWidth, $NewHeight);
// Huidige afbeelding op de nieuwe afbeelding plaatsen
imagecopyresampled($Destination, $Image, 0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight);
// Afbeelding weergeven
imagejpeg($Destination);
// Ingelezen bron verwijderen
imagedestroy($Image);
}
elseif(strtolower(substr($_GET['photo'], -3)) == 'gif')
{
header('content-type: image/gif');
// Het bestand inlezen
$Image = imagecreatefromgif('images/' . $_GET['photo']);
// Nieuwe afbeelding maken
$Destination = imagecreatetruecolor($NewWidth, $NewHeight);
// Huidige afbeelding op de nieuwe afbeelding plaatsen
imagecopyresampled($Destination, $Image, 0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight);
// Afbeelding weergeven
imagegif($Destination);
// Ingelezen bron verwijderen
imagedestroy($Image);
}
// Aangemaakte afbeelding verwijderen
imagedestroy($Destination);
}
?>
error_reporting(E_ALL);
if(isset($_GET['photo']) && !empty($_GET['photo']) && (isset($_GET['sizemax']) || (isset($_GET['maxwidth']) && isset($_GET['maxheight']))))
{
$Dimensions = getimagesize('images/' . $_GET['photo']);
$CurWidth = $Dimensions[0];
$CurHeight = $Dimensions[1];
if(isset($_GET['sizemax']))
{
if($CurWidth > $CurHeight && $CurWidth >= stripslashes($_GET['sizemax']))
{
$Proportion = $CurHeight / $CurWidth;
$NewWidth = stripslashes($_GET['sizemax']);
$NewHeight = $NewWidth * $Proportion;
}
elseif($CurWidth == $CurHeight && $CurWidth >= stripslashes($_GET['sizemax']))
{
$Proportion = $CurHeight / $CurWidth;
$NewWidth = stripslashes($_GET['sizemax']);
$NewHeight = $NewWidth * $Proportion;
}
elseif($CurHeight > $CurWidth && $CurHeight >= stripslashes($_GET['sizemax']))
{
$Proportion = $CurWidth / $CurHeight;
$NewHeight = stripslashes($_GET['sizemax']);
$NewWidth = $NewHeight * $Proportion;
}
else
{
$NewWidth = $Dimensions[0];
$NewHeight = $Dimensions[1];
}
}
elseif(isset($_GET['maxwidth']))
{
if($CurWidth > $CurHeight && $CurWidth >= stripslashes($_GET['maxwidth']))
{
$Proportion = $CurHeight / $CurWidth;
$NewWidth = stripslashes($_GET['maxwidth']);
$NewHeight = $NewWidth * $Proportion;
}
elseif($CurHeight > $CurWidth && $CurHeight >= stripslashes($_GET['maxheight']))
{
$Proportion = $CurWidth / $CurHeight;
$NewHeight = stripslashes($_GET['maxheight']);
$NewWidth = $NewHeight * $Proportion;
}
elseif($CurWidth == $CurHeight && $CurWidth >= stripslashes($_GET['maxwidth']))
{
$Proportion = $CurHeight / $CurWidth;
$NewWidth = stripslashes($_GET['maxwidth']);
$NewHeight = $NewWidth * $Proportion;
}
else
{
$NewWidth = $Dimensions[0];
$NewHeight = $Dimensions[1];
}
}
if(strtolower(substr($_GET['photo'], -3)) == 'png')
{
header('content-type: image/png');
// Het bestand inlezen
$Image = imagecreatefrompng('images/' . $_GET['photo']);
// Nieuwe afbeelding maken
$Destination = imagecreatetruecolor($NewWidth, $NewHeight);
// Huidige afbeelding op de nieuwe afbeelding plaatsen
imagecopyresampled($Destination, $Image, 0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight);
// Afbeelding weergeven
imagepng($Destination);
// Ingelezen bron verwijderen
imagedestroy($Image);
}
elseif(strtolower(substr($_GET['photo'], -3)) == 'jpg')
{
header('content-type: image/jpeg');
// Het bestand inlezen
$Image = imagecreatefromjpeg('images/' . $_GET['photo']);
// Nieuwe afbeelding maken
$Destination = imagecreatetruecolor($NewWidth, $NewHeight);
// Huidige afbeelding op de nieuwe afbeelding plaatsen
imagecopyresampled($Destination, $Image, 0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight);
// Afbeelding weergeven
imagejpeg($Destination);
// Ingelezen bron verwijderen
imagedestroy($Image);
}
elseif(strtolower(substr($_GET['photo'], -4)) == 'jpeg')
{
header('content-type: image/jpeg');
// Het bestand inlezen
$Image = imagecreatefromjpeg('images/' . $_GET['photo']);
// Nieuwe afbeelding maken
$Destination = imagecreatetruecolor($NewWidth, $NewHeight);
// Huidige afbeelding op de nieuwe afbeelding plaatsen
imagecopyresampled($Destination, $Image, 0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight);
// Afbeelding weergeven
imagejpeg($Destination);
// Ingelezen bron verwijderen
imagedestroy($Image);
}
elseif(strtolower(substr($_GET['photo'], -3)) == 'gif')
{
header('content-type: image/gif');
// Het bestand inlezen
$Image = imagecreatefromgif('images/' . $_GET['photo']);
// Nieuwe afbeelding maken
$Destination = imagecreatetruecolor($NewWidth, $NewHeight);
// Huidige afbeelding op de nieuwe afbeelding plaatsen
imagecopyresampled($Destination, $Image, 0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight);
// Afbeelding weergeven
imagegif($Destination);
// Ingelezen bron verwijderen
imagedestroy($Image);
}
// Aangemaakte afbeelding verwijderen
imagedestroy($Destination);
}
?>
Gewijzigd op 25/08/2010 10:24:51 door Jens V
@Jens Dit gaat wel werken maar dit is niet echt efficiënt. Als iets in alle if/elseif 's het zelfde is probeer het er dan buiten te halen dat scheelt je zo ontzettend veel regels.
Jens
het anders script dat ik vind op de link met het thumbs.php filetje krijg ik niet aan de praat...