Versio

Geavanceerd thumbnail probleem

Overzicht Reageren

Jason de Ridder

Jason de Ridder

22/06/2007 14:43:00
Quote Anchor link
Ik ben nu al twee dagen bezig om een thumbnail te maken, van een reeds geupload bestand.
Met de class van Boaz, en menig andere tools.. (www.asido.info (best leuk pakket btw))
Ik dacht hier kan iemand mij vast uit de brand helpen...
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
<?php
    if(move_uploaded_file($_FILES['afbeelding']['tmp_name'], $imagePath)) {
    list($src_width, $src_height) = getimagesize($imagePath);
    if($src_width > $src_height) {
        // vanuit de breedte
        $dst_width = $maxDimension;
        $dst_height = $height / $maxDimension;
    }

    else {
        // vanuit de hoogte
        $dst_height = $maxDimension;
        $dst_width = $src_width / $maxDimension;
    }

    if(imagecopyresampled($thumbPath, $imagePath, 0, 0, 0, 0, intval($dst_width), intval($dst_height), intval($src_width), intval($src_height))) {
            // return true en headeren enzo!
?>


Alvast bedankt..

Noot: uploaden en verplaatsen gaat goed. Dus daar kan het niet aan liggen
Gewijzigd op 01/01/1970 01:00:00 door Jason de Ridder
 
PHP hulp

PHP hulp

24/05/2012 19:13:48
Gesponsorde koppelingen:
 
Wes

wes

22/06/2007 14:44:00
Quote Anchor link
en wat wil er precies niet dan...
 
Arjan Kapteijn

Arjan Kapteijn

22/06/2007 14:46:00
Quote Anchor link
Kijk anders hier even hoe ik het opgelost heb.

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
<?php
function thumbnail($map,$thumblocatie,$bestandsnaam,$breedte,$hoogte)
{

    list($breedte_origineel, $hoogte_origineel, $type) = getimagesize($map.$bestandsnaam);

    //We weten de breedte/hoogte van een afbeelding, we weten ook hoe groot ze moeten worden en gaan dus lekker rekenen!
    if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte)) {
        $breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
    }
else{
        $hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
    }

    
    //Maak een nieuwe afbeelding aan met de juiste breedte en hoogte, openen de originele en gebruik de functie imagecopyresampled om daar een mooie afbeelding van te maken.
    $afbeelding = imagecreatetruecolor($breedte, $hoogte);
    
    switch ($type)
    {
        case
1:
            //gif
            $afbeelding_origineel = imagecreatefromgif($map.$bestandsnaam);
            imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
            imagegif($afbeelding, $map.$thumblocatie.$bestandsnaam);
            break;
        case
2:
            //jpg
            $afbeelding_origineel = imagecreatefromjpeg($map.$bestandsnaam);
            imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
            imagejpeg($afbeelding, $map.$thumblocatie.$bestandsnaam,80);
            break;
        case
3:
            //png
            $afbeelding_origineel = imagecreatefrompng($map.$bestandsnaam);
            imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
            imagepng($afbeelding, $map.$thumblocatie.$bestandsnaam);
            break;
    }  
}

?>
 
Jason de Ridder

Jason de Ridder

22/06/2007 14:46:00
Quote Anchor link
Verkleinen en op de plek opslaan waar ik wil... In ieder geval dat laatste :)
 
Jason de Ridder

Jason de Ridder

22/06/2007 15:01:00
Quote Anchor link
Ik heb je functie een beetje verbouwd, maar werkt ook niet! :(

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
<?php
function thumbnail($imageLoc, $thumblocatie, $breedte, $hoogte)
{

    list($breedte_origineel, $hoogte_origineel, $type) = getimagesize($imageLoc);

    //We weten de breedte/hoogte van een afbeelding, we weten ook hoe groot ze moeten worden en gaan dus lekker rekenen!
    if (($breedte_origineel < $hoogte_origineel) && ($breedte > $hoogte)) {
        $breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
    }
else{
        $hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
    }

    
    //Maak een nieuwe afbeelding aan met de juiste breedte en hoogte, openen de originele en gebruik de functie imagecopyresampled om daar een mooie afbeelding van te maken.
    if(!$afbeelding = imagecreatetruecolor($breedte, $hoogte)) {
        return false;
    }

    
    switch ($type)
    {
        case
1:
            //gif
            $afbeelding_origineel = imagecreatefromgif($imageLoc);
            imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
            if(!imagegif($afbeelding, $thumblocatie)) {
                return false;
            }

            break;
        case
2:
            //jpg
            $afbeelding_origineel = imagecreatefromjpeg($imageLoc);
            imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
            if(!imagejpeg($afbeelding, $thumblocatie, 100)) {
                return false;
            }

            break;
        case
3:
            //png
            $afbeelding_origineel = imagecreatefrompng($imageLoc);
            imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
            if(!imagepng($afbeelding, $thumblocatie)) {
                return false;
            }

            break;
    }

    return true;
}

?>

Edit:

Zou het kunnen liggen aan dat ik dit soort bestandsnamen gebruik? (a2ddd4a9453c9d1bfeb905804cd5fc8c.jpg)
Gewijzigd op 01/01/1970 01:00:00 door Jason de Ridder
 
Jan Koehoorn

Jan Koehoorn

22/06/2007 15:03:00
Quote Anchor link
Ik doe dat ook met een (zelfgemaakte) image class. Geef maar een seintje als je een kopietje wilt.
 
Jason de Ridder

Jason de Ridder

22/06/2007 15:42:00
Quote Anchor link
Heb ik nu ook geprobeerd, werkt ook niet...
schiet mij maar lek...
Misschien is het makkelijk, maar ik heb de tmpfile op het moment van creeeren nog tot mijn beschikking...
 
Jelmer rrrr

Jelmer rrrr

22/06/2007 17:25:00
Quote Anchor link
Euh, "hij werkt niet". Wat bedoel je precies met "hij werkt niet"? Geen foutmeldingen? Geen data?
 
Bart van der veen

bart van der veen

22/06/2007 19:22:00
Quote Anchor link
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
<?
//zelf ff rotzooien met de paden

        function thumb_make($thumb,$file_short){
        
                 $delen = explode('.',$thumb);
                // Set a maximum height and width
                $breedte = 50;
                $hoogte = 50;
                
                // Get new dimensions
                list($breedte_org, $hoogte_org) = getimagesize($thumb);
                
                if ($breedte && ($breedte_org < $hoogte_org)) {
                   $breedte = ($hoogte / $hoogte_org) * $breedte_org;
                }
else {
                   $hoogte = ($breedte / $breedte_org) * $hoogte_org;
                }

                
                // Resample
                $img_p = imagecreatetruecolor($breedte, $hoogte);
                
                if($delen[1]=='jpg' || $delen[1]=='jpeg'){
                    $img = imagecreatefromjpeg($thumb);
                }
elseif($delen[1]=='png'){
                    $img = imagecreatefrompng($thumb);
                }
elseif($delen[1]=='gif'){
                    $img = imagecreatefromgif($thumb);
                }

                    
                imagecopyresampled($img_p, $img, 0, 0, 0, 0, $breedte, $hoogte, $breedte_org, $hoogte_org);
            
                // Output
                imagejpeg($img_p, $_GET[sub1_loc].'/'.$_GET[sub2_loc].'_thumbs/'.$file_short , 100);
        
?>
Gewijzigd op 01/01/1970 01:00:00 door bart van der veen
 
Jason de Ridder

Jason de Ridder

23/06/2007 11:31:00
Quote Anchor link
Jelmer,
Nee hij werkt niet, geen foutmeldingen (op mijn eigen foutmelding na), en ook geen data.

Dank je Bart, maar dit soort scripts heb ik allemaal al eens geprobeerd, ik denk dat het probleem dichter bij de 'kern' ligt.
Ik heb wel gewoon netjes GD library geinstalleerd.

Wat ik wel bij sommige scripts krijg is de output van imagejpeg, dus ik denk dat het probleem ligt bij het wegschrijven...
 
Bo az

Bo az

23/06/2007 11:35:00
Quote Anchor link
Heb je al eens geprobeerd (bijvoorbeeld met mijn class) om het plaatje gewoon weer te geven ipv op te slaan? (op die manier weet je zekerder waar het probleem zit, ik denk namelijk dat je dingen moet gaan uitsluiten...)
 
Jason de Ridder

Jason de Ridder

23/06/2007 12:03:00
Quote Anchor link
Ja met jou class ging het idd, maar opslaan niet...
Ik had je class een beetje verkracht. En return true; en return false; terug laten geven. Maar daar moet het probleem niet liggen neem ik aan?
 
Bo az

Bo az

23/06/2007 12:09:00
Quote Anchor link
Een return kan het probleem niet zijn.

Dan lijkt het me idd in het opslaan te zitten, waarschijnlijk een overbodige vraag, maar 100% zeker dat je de juiste rechten hebt? (A)
 
Jason de Ridder

Jason de Ridder

23/06/2007 12:16:00
Quote Anchor link
Ja...
Ik zit gewoon op een windows bak, lokaal.
Maar ik heb het met chmod geprobeerd en op een externe host.
 
Jason de Ridder

Jason de Ridder

25/06/2007 19:38:00
Quote Anchor link
BUMP (A)
 



Overzicht Reageren

Get Adobe Flash player