thumbnails on-the-fly

Door Abiboe -, 22 jaar geleden, 9.980x bekeken

on the fly?

Inleiding:

thumbnails gebruiken kan op verschillende manieren gedaan worden:

1. een aparte map:

er worden 2 foto's met dezelfde naam geupload, een foto in de map bestanden of iets dergelijks, een andere met bijv photoshop verkleinde foto in de map thumbs.
een script leest de map bestanden en zoekt bij de foto's in die map de bijhorende thumbnail uit de map thumbs.

2. on-the-fly:

hier hoeft er maar 1 map met foto's geupload te worden. een speciaal script, thumb.php genaamt verkleint met behulp van php en gd de foto's uit de map bestanden, laat ze zien en verwijdert ze daarna. Dit kan bij een groot fotoboek met meer dan 50 foto's een oplossing bieden voor het tijdrovende verkleinen van foto's

om foto's weer tegeven moet je dit gebruiken:

<img src='thumb.php?bestand=test.jpg'>

Gesponsorde koppelingen

PHP script bestanden

  1. thumbnails-onthefly

 

Er zijn 24 reacties op 'Thumbnails onthefly'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Han eev
Han eev
22 jaar geleden
 
0 +1 -0 -1
Dit is beter en nu nog bij de tut's weghalen!


22 jaar geleden
 
0 +1 -0 -1
Dit is een perfect script waar ik al een tijdje naar op zoek ben.
Maar nu wil ik eigenlijk het een beetje andres hebben. Misschien dat iemand mij kan helpen?

Ik heb een nieuws pagina, waar dus artikelen op staan, onder elk artikel komen 12 foto's te staan.
Hoe kan ik er nou voor zorgen dat hij dit dus doet met 12 foto's?
En de bestandsnamen moet hij uit de database halen.
Kan iemand mij helpen om dit script zo aan te passen?

Alvast bedankt.


22 jaar geleden
 
0 +1 -0 -1
Hello guys !
Waar en in welke bestanden moeten deze codes worden geplaatst ?

thanks !
Abiboe -
abiboe -
22 jaar geleden
 
0 +1 -0 -1
dit noem je gewoon thump.php
om dan een foto op te roepen doe je: <img src='thumb.php?file=test.jpg'>

draait trouwens online op http://abel.bergenalkmaarschoorl.com/fotoboek/index.php
Wijnand
wijnand
22 jaar geleden
 
0 +1 -0 -1
zet aub niet $foto = *** in je script.
maar :
$bestand = $_GET['bestand'];
$imagearray = getimagesize($bestand);

en de aanroep moet ook niet zo : <img src='thumb.php?bestand=test.jpg'>
maar via een hyperlink of form item.

dan werkt het wel......
Xindi
Xindi
22 jaar geleden
 
0 +1 -1 -1
Henki Timmer
Henki Timmer
22 jaar geleden
 
0 +1 -0 -1
Handig script, ik zou alleen als ik jou was imagecopyresampled() gebruiken ipv imagecopyresized() :)
Emile
emile
22 jaar geleden
 
0 +1 -0 -1
waarom doet dit script het bij mij niet...

ik weet zeker dat het plaatje bestaat maar krijg toch een rood kruis ze zien !
kunnen jullie mij dit uileggen?
Emile
emile
22 jaar geleden
 
0 +1 -0 -1
ik ben wanhopig opzoek naar dit antwoord...
kan iemand mij vertellen waarom hij bij mij een rood scherm laat zien.

GD is geistalleerd en werkt ook...
Jelmer -
Jelmer -
22 jaar geleden
 
0 +1 -0 -1
Ga eens direct naar de url van het plaatje met notepad (ja, je hoort het goed)

Gewoon notepad opstarten -> openen -> url van plaatje (dat door de resizer wordt gehaald) en wat zie je daar in leesbare tekst staan? Waarschijnlijk de foutmelding.

Je kan ook even tijdelijk de header(*) eruit gooien, en dan met de browser naar het plaatje gaan. Ook dan zie je de foutmelding.
Emile
emile
22 jaar geleden
 
0 +1 -0 -1
achter deze regel moet een ;


$img = @imagecreatefromjpeg($bestand)

die staat niet in het script daarom werkte deze niet !!!
Martijn Wieringa
Martijn Wieringa
22 jaar geleden
 
0 +1 -0 -1
Ik heb deze functie daar ooirt voor geschreven.. die genereerd .JPG thumbs.. enjoy..

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
<?php
    /*
        Auteur: ME Wieringa
        Email: [email protected]

        This function creates a JPG formatted thumb.

        sourcePath:        Path of original image (this can be a GIF, PNG or JPG)
        thumbPath:        Path where thumb should be stored (this path should ALWAYS end with .jpg)
        thumbWidth:        Prefered width of the thumb (0 = relative to its height)
        thumbHeight:    Prefered height of the thumb (0 = relative to its width)
        quality:        The quality percentage of the created thumb.
    */

    function createThumb($sourcePath, $thumbPath, $thumbWidth = 0, $thumbHeight = 0, $quality = 75)
    {

        $sourceExtention = strtolower(array_pop(split("[.]", $sourcePath)));

        if(strcasecmp($sourceExtention, "gif") === 0)
        {

            $sourceData = imagecreatefromgif($sourcePath);
        }

        elseif(strcasecmp($sourceExtention, "png") === 0)
        {

            $sourceData = imagecreatefrompng($sourcePath);
        }

        elseif((strcasecmp($sourceExtention, "jpg") === 0) || (strcasecmp($sourceExtention, "jpeg") === 0))
        {

            $sourceData = imagecreatefromjpeg($sourcePath);
        }

        else
        {
            return false;
        }


        if($sourceData)
        {

            $sourceWidth = imagesx($sourceData);
            $sourceHeight = imagesy($sourceData);

            if($thumbWidth > 0)
            {

                if($thumbHeight === 0)
                {

                    $thumbHeight = round($sourceHeight * ($thumbWidth / $sourceWidth));
                }
            }

            elseif($thumbHeight > 0)
            {

                $thumbWidth = round($sourceWidth * ($thumbHeight / $sourceHeight));
            }

            else // No scaling
            {
                $thumbHeight = $sourceHeight;
                $thumbWidth = $sourceWidth;
            }


            $thumbData = imagecreatetruecolor($thumbWidth, $thumbHeight);

            if(imagecopyresampled($thumbData, $sourceData, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $sourceWidth, $sourceHeight))
            {

                if(ImageJpeg($thumbData, $thumbPath, $quality))
                {

                    Imagedestroy($sourceData);
                }

                else
                {
                    return false;
                }
            }

            else
            {
                return false;
            }


            return true;
        }
    }

?>

Modedit: code leesbaar gemaakt
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
dank je wel Pholeron voor het delen!!!
Stefan
Stefan
22 jaar geleden
 
0 +1 -0 -1
Super handig script!
Hoe kan ik de kwaliteit naar het maximale aanpassen?

Dat zou ik mooier vinden. :)
The_J
The_J
22 jaar geleden
 
0 +1 -0 -1
Kwaliteit wordt bepaald bij imagejpeg(); de 3e optionele parameter kan je op n getal tussen de 1 en 100 zetten om zo de kwaliteit in te stellen.
Regel 33: imagejpeg($img); moet veranderd worden naar:
imagejpeg($img, '', $kwaliteit);
dan kan je ergens anders (noobs: boven de functie) $kwaliteit = "100"; ofzo neerzetten
The_J
The_J
22 jaar geleden
 
0 +1 -0 -1
Het kan zijn dat imagejpeg($img, '', $kwaliteit); niet werkt als de 2e parameter MOET worden ingesteld, die is er om het als bestand op te slaan.
Stefan
Stefan
22 jaar geleden
 
0 +1 -0 -1
Ik heb nu dus het script werkend gekregen, alleen ik lijk last te hebben van een beetje samenpersing...

Zie deze pagina..

Hoe valt dit op te lossen?
Niek Kasius
Niek Kasius
21 jaar geleden
 
0 +1 -0 -1
nou ik weet niet wat jij onder thumbnails verstaat maar op "zie deze pagina" zijn ze wel erg groot! Stefan.
en abidoe het zou leuk zijn als je een adres op geeft dat wel werkt en niet dit http://abel.bergenalkmaarschoorl.com/fotoboek/index.php want dat geeft:
404: File Not found
The requested page could not be found
Willem Jan Z
Willem Jan Z
21 jaar geleden
 
0 +1 -0 -1
abiboe, het voorbeeld werkt niet (meer). Heb je nog een voorbeeld? Zo nee, haal de link dan aub weg.
Sahbil
sahbil
20 jaar geleden
 
0 +1 -0 -1
@willemJan Zijderveld

steun!
Wouter De Schuyter
Wouter De Schuyter
18 jaar geleden
 
0 +1 -0 -1
werkt voor geen meter bij mij..
Piet Marisael
Piet Marisael
16 jaar geleden
 
0 +1 -0 -1
voor degene die nog steeds roepen dat het niet werkt:
er zit een klein foutje in het script en zoals emile al aangaf moet er een ; bij geplaatst worden.

Dan ziet de juiste code van thumb.php er zo uit:

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
<?php
$bestand
= $_GET['bestand'];
$imagearray = getimagesize($bestand);
$breedte = $imagearray[0];
$hoogte = $imagearray[1];    
$max_hoogte = '90';
$max_breedte = '120';
if ($hoogte > $max_breedte || $hoogte > $max_hoogte)
{

if ($breedte / $hoogte > $max_breedte / $max_hoogte)  // als de breedte te groot is
{
$breedtenieuw = $max_breedte;                                      
$a = $breedte / $max_breedte;
$hoogtenieuw = round ($hoogte / $a);
}

else
{
$hoogtenieuw = $max_hoogte;                                     // als de hoogte te groot is
$a = $hoogte / $max_hoogte;
$breedtenieuw = round($breedte / $a);
}}

else                                                                      // als het plaatje precies groot genoeig is        
{
$hoogtenieuw = $max_hoogte;
$breedtenieuw = $max_breedte;
}

$img = @imagecreatefromjpeg($bestand) ;
$tmp_img = imagecreatetruecolor($breedtenieuw, $hoogtenieuw);
imagecopyresized($tmp_img, $img,0,0,0,0,$breedtenieuw,$hoogtenieuw,$breedte,$hoogte);
imagedestroy($img);
$img = $tmp_img;
header('Content-type: image/jpeg');
imagejpeg($img);
?>

of zal het Paradox al ontdekt hebben? :-)

Succes....
Wouter De Schuyter
Wouter De Schuyter
16 jaar geleden
 
0 +1 -0 -1
@ Piet; ik had toen nog praktisch geen ervaring met php en zal dat toen idd zelf niet gezien hebben =P (zoals je kan zien was die reply 2 jaar geleden :p)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Pim -
Pim -
16 jaar geleden
 
0 +1 -0 -1
Caching!

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. thumbnails-onthefly

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

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.