Schalen van thumbnails op basis van waarde in databank

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wulf Vandekerckhove

Wulf Vandekerckhove

25/08/2010 01:25:11
Quote Anchor link
Goeieavond,

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="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $row_Recordset1['foto']; ?>
" width="160" height="120" border="0" />

breedt is dus $row_Recordset1['width']
hoogte $row_Recordset1['height']

Alvast bedankt!

Groet,
 
PHP hulp

PHP hulp

20/04/2024 13:53:52
 
Vincent Huisman

Vincent Huisman

25/08/2010 07:43:21
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if($row_Recordset1['height'] > $row_Recordset1['width'])
    $waarde = 'height="120px"';
else
    $waarde = 'width="120px"';

echo '<img src="'.$row_Recordset1['foto'].'" border="0" alt="foto" '.$waarde.' />';
?>


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
 
Jens V

Jens V

25/08/2010 10:23:14
Quote Anchor link
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 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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
    }

?>
Gewijzigd op 25/08/2010 10:24:51 door Jens V
 
John Doe

John Doe

25/08/2010 10:46:43
Quote Anchor link
@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 V

Jens V

25/08/2010 10:55:05
Quote Anchor link
Het punt was dat het over het resizen ging:) Hier is toevallig support voor meerdere image-types toegevoegd. De code kan inderdaad wel wat efficiënter, ja :)

Jens
 
Wulf Vandekerckhove

Wulf Vandekerckhove

25/08/2010 17:09:39
Quote Anchor link
Het is gelukt met het scriptje van vincent... maar het klopt natuurlijk ook dat de foto's dan helemaal moeten inladen terwijl dat dat niet nodig is, en kB's vreet...

het anders script dat ik vind op de link met het thumbs.php filetje krijg ik niet aan de praat...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.