Resize & upload zonder vervorming

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kristof

Kristof

04/07/2005 14:48:00
Quote Anchor link
Ik ben hier al enkele uren aan het trachten om enkele scripts samen te voegen tot één script. Er is hier namelijk wel een resize en upload script te vinden, maar deze werkt enkel met vervorming.
Nu, het script wat ik tracht te maken is als volgt:

je hebt een bestand upload.php waarvan het eerste gedeelte zorgt voor het uploaden en het checken van extensie. Het tweede gedeelte haalt dan de image uit de uploads folder (waar de file is ge-upload...), resized deze foto in het 1280x800 formaat, en slaat deze op in de uploads/wxga folder. Althans, dat is wat het script ZOU moeten doen. de scritps werken afzonderlijk perfect, maar als ik ze samenvoeg krijg ik volgende error:
Parse error: parse error, unexpected T_VARIABLE in /home/user/kristof.jacobs/www/upload/upload.php on line 58
Iemand enig idee wat er fout gaat? Mijn php kennis is zeer beperkt, maar we leren bij :-)
Hieronder het script:


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
123
124
125
126
<?  
//In het bovenste gedeelte wordt de file ge-upload

global $_FILES;  

$filename = $_FILES['userfile']['name'];  

$allow[0] = "jpg";
$allow[1] = "gif";
$allow[2] = "bmp";
$allow[3] = "JPG";
$allow[4] = "JPEG";
$allow[5] = "jpeg";

if ($_POST["newname"])  
    $uploadname = $_POST['newname'];  
else  
    $uploadname = $_FILES['userfile']['name'];
    
$extentie = substr($uploadname, -3);

for ($i = 0; $i < count($allow); $i++)
{

    if ($extentie == $allow[$i])
    {

        $extentie_check = "ok";
        $i = count($allow) + 7; // om loop te beindigen
    }
}


if ($extentie_check)
{

    if($_FILES['userfile']['size'] > 999999999) {
        echo "Het bestand is te groot!";
    }
else {
        if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {  
            move_uploaded_file($_FILES['userfile']['tmp_name'], "uploads/" . $uploadname);  

            echo "Het bestand is geupload onder de naam: $uploadname";  
        }

    }
}

else
{
    echo "De extensie wordt niet toegelaten op deze server!";
}


//Het gedeelte hieronder resized de picture die ge-upload werd.

error_reporting(E_ALL);
// $breedte is nieuwe breedte
// $hoogte is nieuwe hoogte
// $imgFILE waar het plaatje van gemaakt wordt, het orgineel dus (bijv $_FILES['image']['tmp_name'])
// $imgDIR waar het plaatje naartoe verhuisd als ie gemaakt is
// $imgNAME nieuwe naam voor plaatje (bijv. mysql_insert_id () )
// $imgEXTENSION jpg of voor thumbs _th.jpg etc.
// $quality getal tussen de 0 en 100 waarbij 100 beste kwaliteit is


$breedte = '1280';
$hoogte = '800';
$imgFILE = 'uploads/'$uploadname;
$imgDIR = 'wxga/';
$imgNAME = $uploadname;
$imgEXTENSION = '.jpg';
$quality = '100';

function
create_new_JPGimage ($breedte, $hoogte, $imgFILE, $imgDIR, $imgNAME, $imgEXTENSION, $quality)
{
                    
//temp_photo voor thumbnail maken
$photo = imagecreatefromjpeg ($imgFILE);
    
//afmetingen bepalen
$source_x = imagesx($photo);
$source_y = imagesy($photo);

$target_x = $breedte;
$target_y = $hoogte;

//als foto te hoog is
if (($source_x/$target_x) < ($source_y/$target_y))
    {

    //echo "te hoog";
    $from_y = ceil(($source_y - ($target_y * $source_x / $target_x))/2);
    $from_x = '0';
    $source_used_y = ceil(($target_y * $source_x / $target_x));
    $source_used_x = $source_x;
    }


//als foto te breed is
if (($source_y/$target_y) < ($source_x/$target_x))
    {

    //echo "te breed";
    $from_x = ceil(($source_x - ($target_x * $source_y / $target_y))/2);
    $from_y = '0';
    $source_used_x = ceil(($target_x * $source_y / $target_y));
    $source_used_y = $source_y;
    }


//als verhoudingen gelijk zijn    
if (($source_x/$target_x) == ($source_y/$target_y))
    {

    $from_x = '0';
    $from_y = '0';
    $source_used_x = $source_x;
    $source_used_y = $source_y;
    }




//nieuwe image maken en wegschrijven naar dir

$create_blank = imagecreatetruecolor ($target_x, $target_y);

imagecopyresampled ($create_blank, $photo, 0, 0, $from_x, $from_y, $target_x, $target_y, $source_used_x, $source_used_y);

$new_filename = $imgDIR.$imgNAME.$imgEXTENSION;
                
ImageJpeg($create_blank,$new_filename,$quality);

Imagedestroy($photo);
}



create_new_JPGimage ($breedte, $hoogte, $imgFILE, $imgDIR, $imgNAME, $imgEXTENSION, $quality);  
?>
 
PHP hulp

PHP hulp

27/11/2024 07:13:58
 
Kristof

Kristof

07/07/2005 16:31:00
Quote Anchor link
niemand een idee?
 
Han eev

Han eev

07/07/2005 17:11:00
Quote Anchor link
Zoek ik op image resize!
 
Marien xD

Marien xD

07/07/2005 19:34:00
Quote Anchor link
ik heb nog een resize functie op breedte die kan je wel gebruiken hoor. deze vervormt ook niet...
 
Kristof

Kristof

07/07/2005 22:55:00
Quote Anchor link
ja, mag je altijd eens posten hier. Kan ik het eens bekijken. Probleem is dat bovenstaand resize script perfect werkt, maar dat ik de upload combinatie niet eraan krijg gekoppeld.
 

08/07/2005 00:57:00
Quote Anchor link
Je fout zit hier:

$imgFILE = 'uploads/'$uploadname;

Verander dit in:

$imgFILE = 'uploads/' . $uploadname;

Dan werkt je script perfekt (ik gebruik hem ook!)



Michael
 
Jelmer -

Jelmer -

08/07/2005 08:36:00
Quote Anchor link
global $_FILES
Dat hoeft helemaal niet. Superglobals zijn standaard altijd al global.
En zet error_reporting(E_ALL); maar op die plaats, dan krijg je ook daadwerkelijk alle errors te zien.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$extentie
= substr($uploadname, -3);
//je geeft zelf nog extensies van 4 letters op, maar knipt er maar 3 af.

for ($i = 0; $i < count($allow); $i++)
{

    if ($extentie == $allow[$i])
    {

        $extentie_check = "ok";
        $i = count($allow) + 7; // om loop te beindigen
    }
}
?>

Die for-loop kan makkelijker met in_array().
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if(in_array($extentie, $allow)){
   $extentie_check = 'ok';
}
?>


Misschien heb je wat aan mijn Bugreport ^^,
 



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.