Meerdere thumbs tegelijk maken bij uploaden image

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Anne

anne

07/01/2009 11:19:00
Quote Anchor link
Beste PHP-ers.

Ik ben bezig met een script waar , gelijk bij het uploaden, 3 thumbnails gemaakt worden. kan ik natuurlijk een het script 3 keer aanroepen op 1 pagina en daarin de verschillende breedtes, hoogtes en mapnaam in opgeven. Maar ik wou eigelijk dat zoiets met een for-lus (of iets dergelijks) kon gebeuren. Hieronder staat de code wat ik geprobeerd 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
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
<?php

if(isset($_POST['submit']) && isset($_POST[afbeeldingen]))
{

    $filename = $_FILES['afbeeldingen']['name'];
    $tmp_name = $_FILES['afbeeldingen']['tmp_name'];
    
    $map_naam[0] = "klein";
    $map_naam[1] = "middel";
    $map_naam[2] = "groot";
    
    $image_breedte[0] = "100";
    $image_breedte[1] = "250";
    $image_breedte[2] = "500";
    
    for($i=0;$i<3;$i++){
    
        if(!empty($filename)) {
        
        
        
            if(is_uploaded_file($tmp_name))
            {
          
                if(move_uploaded_file($tmp_name,'uploads/'.$filename)) {
                    $sFile = 'uploads/'.$filename;  
                    $sFile2 = 'uploads/'.$map_naam[$i].'/';              
                     chmod($sFile2,0777);
                    
                    list($width, $height) = getimagesize($sFile);
                    $newwidth = $image_breedte[$i];
                    $newheight = ($height/$width) *$newwidth;
                    $sExt = explode('.',$filename);
                    $thumb = imagecreatetruecolor($newwidth, $newheight);
                    switch($sExt[1]) {
                        case
'gif':
                        $source = imagecreatefromgif($sFile);
                        $error = false;
                        break;
                        case
'jpg':
                        $source = imagecreatefromjpeg($sFile);
                        $error = false;
                        break;
                        case
'jpeg':
                        $source = imagecreatefromjpeg($sFile);
                        $error = false;
                        break;
                        case
'png':
                        $source = imagecreatefrompng($sFile);
                        $error = false;
                        break;
                        default:

                        $error = true;
                    }

                    if(!$error) {
                        imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                        switch($sExt[1]) {
                            case
'gif':
                            imagegif($thumb, 'uploads/'.$map_naam[$i].'/'.$filename.'',100);
                            break;
                            case
'jpg':
                            imagejpeg($thumb, 'uploads/'.$map_naam[$i].'/'.$filename.'',100);
                            break;
                            case
'jpeg':
                            imagejpeg($thumb, 'uploads/'.$map_naam[$i].'/'.$filename.'',100);
                            break;
                            case
'png':
                            imagepng($thumb, 'uploads/'.$map_naam[$i].'/'.$filename.'',100);
                            break;
                        }

                        
                        echo '<img src="uploads/'.$map_naam[$i].'/'.$filename.'" alt="'.$filename.'" /><br />';
                        
                    }
                }
            }
            
        }
        }            
}
else {
    ?>

    <form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="afbeeldingen" /><br />
 
    <input type="submit" name="submit" value="Verstuur!" />
    <?php
}
?>
 
PHP hulp

PHP hulp

05/05/2024 08:48:22
 
Dennis Mertens

Dennis Mertens

07/01/2009 11:25:00
Quote Anchor link
Een switch inbouwen voor de breedte en hoogte?

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
<?php
switch($i)
{
    case
0:
        $newwidth = 50;
        $newheight = 50;
    break;
    case
1:
        $newwidth = 100;
        $newheight = 100;
    break;
    default:

        $newwidth = 150;
        $newheight = 150;
}
[
/code]

[
b]Edit[/b]
Een veel kortere manier, met Ternary Operator:

[
code][code]<?php
$newwidth
= $i == 0 ? 50 : ($i == 1 ? 100 : 150);
$newheight = $i == 0 ? 50 : ($i == 1 ? 100 : 150);
[
/code]
0 = 50
1
= 100
? = 150

Wat doet het? Hier in een if/else statement:
[
code]
[
code]<?php
if($i == 0)
{

    $newwidth = 50;
}

else
{
    if($i == 1)
    {

        $newwidth = 100;
    }

    else
    {
        $newwidth = 150;
    }
}
[
/code]

En dus NIET dit:
[
code][code]<?php
if($i == 0)
{

    $newwidth = 50;
}

elseif($i == 1)
{

    $newwidth = 100;
}

else
{
    $newwidth = 150;
}
[
/code]

Ook al is het resultaat hetzelfde ;)

Maar iig, ik zou voor de Ternary Operator gaan :), kort en vooral krachtig

[b]Edit again[/b]
Wat OOK kan, is een functie maken met de functionaliteit van het thumbnailen :)
En als parameters de breedte en hoogte mee geven etc. Dan heb je een for-loop die die functie herhaalt.

Maar dan verplaats je de code eigenlijk alleen, het is een optie.
Gewijzigd op 01/01/1970 01:00:00 door Dennis Mertens
 
Anne

anne

07/01/2009 11:35:00
Quote Anchor link
Dankjewel voor de tips!;)

Het systeempje werkt alleen nog niet. Hij heeft het één keer gedaan. Ik weet niet meer wat ik toen veranderd heb zodat hij het nu niet meer doet.
 
Anne

anne

07/01/2009 12:25:00
Quote Anchor link
Zo werkt het (gedeeltelijk) wel. Het programma maakt nu alleen een kleine thumbnail:( dus de andere thumbs 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
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
<?php
error_reporting(E_ALL);
ob_start();
if(isset($_POST['submit']))
{

    $filename = $_FILES['afbeeldingen']['name'];
    $tmp_name = $_FILES['afbeeldingen']['tmp_name'];
    
    
    
    
    for($i=0;$i<3;$i++){
    
            if(!empty($filename)) {
            
            
                
                if(is_uploaded_file($_FILES['afbeeldingen']['tmp_name']))
                {

                    
                    $mapnaam = $i == 0 ? 'klein' : ($i == 1 ? 'middel' : 'groot');
                    
                    if(move_uploaded_file($tmp_name,'./uploads/'.$mapnaam.'/'.$filename)) {
                        
                    
                    
                    
                        $sFile = 'uploads/'.$mapnaam.'/'.$filename;  
                        $sFile2 = 'uploads/'.$mapnaam.'';              
                        
                        
                        list($width, $height) = getimagesize($sFile);
                        
                        $newwidth = $i == 0 ? 50 : ($i == 1 ? 100 : 150);
                        $newheight = ($height/$width) * $newwidth;
                        $sExt = explode('.',$filename);
                        $thumb = imagecreatetruecolor($newwidth, $newheight);
                        switch($sExt[1]) {
                            case
'gif':
                            $source = imagecreatefromgif($sFile);
                            $error = false;
                            break;
                            case
'jpg':
                            $source = imagecreatefromjpeg($sFile);
                            $error = false;
                            break;
                            case
'jpeg':
                            $source = imagecreatefromjpeg($sFile);
                            $error = false;
                            break;
                            case
'png':
                            $source = imagecreatefrompng($sFile);
                            $error = false;
                            break;
                            default:
true;
                        }

                        if(!$error) {
                            imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                            switch($sExt[1]) {
                                case
'gif':
                                imagegif($thumb, 'uploads/'.$mapnaam.'/'.$filename,100);
                                break;
                                case
'jpg':
                                imagejpeg($thumb, 'uploads/'.$mapnaam.'/'.$filename,100);
                                break;
                                case
'jpeg':
                                imagejpeg($thumb, 'uploads/'.$mapnaam.'/'.$filename,100);
                                break;
                                case
'png':
                                imagepng($thumb, 'uploads/'.$mapnaam.'/'.$filename,100);
                                break;
                            }

                            
                            echo '<img src="uploads/'.$mapnaam.'/'.$filename.'" alt="'.$filename.'" /><br />';
                            
                        }
else{
                                echo 'Errors gesignaleerd!';
                            }
                    }
                }
                
            }
        }            
}
else {
    ?>

    <form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="afbeeldingen" /><br />
 
    <input type="submit" name="submit" value="Verstuur!" />
    <?php
}
?>
 



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.