Fotoalbum.
Ook ik ga jullie even lastigvallen met mijn probleem !
Bij het uploaden wordt er een thumb aangemaakt zoals je merkt..
De 'originele' foto wordt in de map /i/ opgeslaan.
De thumb wordt opgeslaan in de map /i/t/
Maar graag had ik ook gehad dat de foto die in /i/ wordt opgeslaan ook een thumb wordt vooraleer hij daar opgeslaan wordt..
Hij mag max. 500 breed zijn, en max. 400 hoog.
De max. filesize mag 3MB zijn. Bij het aanmakenv an een thumb had ik graag dat die 3MB nog maar iets van een 100-500Kb zou zijn.. (Door de Quality te verlagen).
Om nog even uit te leggen...
Bij het uploaden van een foto gebeurt het volgende:
1. Originele foto wordt gewijzigd naar een max. hoogte van 400pixels, en max. breedte van 500pixels. Deze wordt opgeslaan in map /i/
2. Originele foto wordt opgeslaan met max. breedte van 84, en max. hoogte van 64. En wordt opgeslaan in map /i/t/
Stap 2 zit al in het script, maar hoe kan ik stap 1 hierin bouwen?
Code (php)
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
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
<?php
// Mappen CHMOD 777 !
if(isset($_POST['uploaden'])){
$dir = "i/"; // map voor images
$thumb_dir = "i/t/"; // map voor thums
$maxsize = 256000; // maximum groote images
$max_y = 64; // maximum hoogte thumbs
$max_x = 84; // maximum breedte thumbs
$pathinfo = pathinfo($_FILES['bestand']['name']);
$ext = $pathinfo["extension"];
switch($ext){
case "jpg" : $thumb = imagecreatefromjpeg($_FILES['bestand']['tmp_name']);
break;
case "jpeg" : $thumb = imagecreatefromjpeg($_FILES['bestand']['tmp_name']);
break;
case "gif" : $thumb = imagecreatefromgif($_FILES['bestand']['tmp_name']);
break;
case "png" : $thumb = imagecreatefrompng($_FILES['bestand']['tmp_name']);
break;
default : $wrongext = 1;
}
if(isset($wrongext)){
$error = "Deze extensie ondersteunen wij niet! Enkel .jpg, .jpeg, .gif & .png worden toegelaten!<br><b>Oplossing:<b> Open de foto in Paint, klik op Bestand > Opslaan als. Sla hem daar op als .jpg";
}else{
if($_FILES['bestand']['size'] > $maxsize){
$error = "Het bestand is te groot, deze mag maximaal 250Kb zijn.";
}else{
$succes = true;
}
}
if(!isset($succes) || isset($error)){
echo "<b>Er is een fout op getreden:</b><br>";
echo $error;
imagedestroy($thumb);
}else{
$CID = $_COOKIE["CID"];
$time = date(U);
$naam = "$CID-$time.jpg";
$x = imagesx($thumb);
$y = imagesy($thumb);
// Toevoegen in SQL Database..
include("config.php");
$query="INSERT INTO img (naam,breedte,hoogte,datum, CID) VALUES ('".$naam."','".$x."','".$y."',NOW(),'".$CID."');";
mysql_query($query) or die(mysql_error());
move_uploaded_file($_FILES['bestand']['tmp_name'], $dir."$naam") or die("Kan niet uploaden");
if(($max_x/$max_y) < ($x/$y)){
$eind = imagecreatetruecolor($x/($x/$max_x), $y/($x/$max_x)) or die("Fout: imagecreattreucolor() 1");
}else{
$eind = imagecreatetruecolor($x/($y/$max_y), $y/($y/$max_y)) or die("Fout: imagecreattreucolor() 2");
}
imagecopyresampled($eind, $thumb, 0, 0, 0, 0, imagesx($eind), imagesy($eind), $x, $y) or die("Fout: imagecopyresized()");
imagegif($eind, $thumb_dir."$naam") or die("Fout: imagegif()");
imagedestroy($thumb);
imagedestroy($eind);
?>
<p class="h2">Fotoalbum</p>
<div class="cbox" style="width: 600px;">
<?php echo "<b>De foto is succesvolg toegevoegd !<br><br><a href=\"".$dir."$naam"."\" target=\"_blank\"><img src=\"".$thumb_dir."$naam"."\" border=\"0\"></a><br></div>";
}
}
?>
<p class="h2">Fotoalbum</p>
<div class="cbox" style="width: 600px;">Hier kunt u een afbeelding toevoegen aan uw fotoalbum.<br>
<form action=<?php echo "".$_SERVER['PHP_SELF'].""; ?> method="post" enctype="multipart/form-data" name="form" id="form">
<input name="bestand" type="file" id="bestand" size="50">
<br>
<br>
<input name="uploaden" type="submit" id="uploaden" value="Uploaden">
</form>
</div>
// Mappen CHMOD 777 !
if(isset($_POST['uploaden'])){
$dir = "i/"; // map voor images
$thumb_dir = "i/t/"; // map voor thums
$maxsize = 256000; // maximum groote images
$max_y = 64; // maximum hoogte thumbs
$max_x = 84; // maximum breedte thumbs
$pathinfo = pathinfo($_FILES['bestand']['name']);
$ext = $pathinfo["extension"];
switch($ext){
case "jpg" : $thumb = imagecreatefromjpeg($_FILES['bestand']['tmp_name']);
break;
case "jpeg" : $thumb = imagecreatefromjpeg($_FILES['bestand']['tmp_name']);
break;
case "gif" : $thumb = imagecreatefromgif($_FILES['bestand']['tmp_name']);
break;
case "png" : $thumb = imagecreatefrompng($_FILES['bestand']['tmp_name']);
break;
default : $wrongext = 1;
}
if(isset($wrongext)){
$error = "Deze extensie ondersteunen wij niet! Enkel .jpg, .jpeg, .gif & .png worden toegelaten!<br><b>Oplossing:<b> Open de foto in Paint, klik op Bestand > Opslaan als. Sla hem daar op als .jpg";
}else{
if($_FILES['bestand']['size'] > $maxsize){
$error = "Het bestand is te groot, deze mag maximaal 250Kb zijn.";
}else{
$succes = true;
}
}
if(!isset($succes) || isset($error)){
echo "<b>Er is een fout op getreden:</b><br>";
echo $error;
imagedestroy($thumb);
}else{
$CID = $_COOKIE["CID"];
$time = date(U);
$naam = "$CID-$time.jpg";
$x = imagesx($thumb);
$y = imagesy($thumb);
// Toevoegen in SQL Database..
include("config.php");
$query="INSERT INTO img (naam,breedte,hoogte,datum, CID) VALUES ('".$naam."','".$x."','".$y."',NOW(),'".$CID."');";
mysql_query($query) or die(mysql_error());
move_uploaded_file($_FILES['bestand']['tmp_name'], $dir."$naam") or die("Kan niet uploaden");
if(($max_x/$max_y) < ($x/$y)){
$eind = imagecreatetruecolor($x/($x/$max_x), $y/($x/$max_x)) or die("Fout: imagecreattreucolor() 1");
}else{
$eind = imagecreatetruecolor($x/($y/$max_y), $y/($y/$max_y)) or die("Fout: imagecreattreucolor() 2");
}
imagecopyresampled($eind, $thumb, 0, 0, 0, 0, imagesx($eind), imagesy($eind), $x, $y) or die("Fout: imagecopyresized()");
imagegif($eind, $thumb_dir."$naam") or die("Fout: imagegif()");
imagedestroy($thumb);
imagedestroy($eind);
?>
<p class="h2">Fotoalbum</p>
<div class="cbox" style="width: 600px;">
<?php echo "<b>De foto is succesvolg toegevoegd !<br><br><a href=\"".$dir."$naam"."\" target=\"_blank\"><img src=\"".$thumb_dir."$naam"."\" border=\"0\"></a><br></div>";
}
}
?>
<p class="h2">Fotoalbum</p>
<div class="cbox" style="width: 600px;">Hier kunt u een afbeelding toevoegen aan uw fotoalbum.<br>
<form action=<?php echo "".$_SERVER['PHP_SELF'].""; ?> method="post" enctype="multipart/form-data" name="form" id="form">
<input name="bestand" type="file" id="bestand" size="50">
<br>
<br>
<input name="uploaden" type="submit" id="uploaden" value="Uploaden">
</form>
</div>
Waarschijnlijk leg ik het moeilijk uit..
Mocht je niet begrijpen wat ik bedoel,
gelieve niet te twijfelen om een reactie na te laten.
Alvast bedankt,
Olivier
Volgens mij moet het iets worden waarbij dit:
Code (php)
1
move_uploaded_file($_FILES['bestand']['tmp_name'], $dir."$naam") or die("Kan niet uploaden");
wordt vervangen door iets als dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(($max_x/$max_y) < ($x/$y)){
$eind = imagecreatetruecolor($x/($x/$max_x), $y/($x/$max_x)) or die("Fout: imagecreattreucolor() 1");
}else{
$eind = imagecreatetruecolor($x/($y/$max_y), $y/($y/$max_y)) or die("Fout: imagecreattreucolor() 2");
}
imagecopyresampled($eind, $thumb, 0, 0, 0, 0, imagesx($eind), imagesy($eind), $x, $y) or die("Fout: imagecopyresized()");
imagegif($eind, $thumb_dir."$naam") or die("Fout: imagegif()");
imagedestroy($thumb);
imagedestroy($eind);
$eind = imagecreatetruecolor($x/($x/$max_x), $y/($x/$max_x)) or die("Fout: imagecreattreucolor() 1");
}else{
$eind = imagecreatetruecolor($x/($y/$max_y), $y/($y/$max_y)) or die("Fout: imagecreattreucolor() 2");
}
imagecopyresampled($eind, $thumb, 0, 0, 0, 0, imagesx($eind), imagesy($eind), $x, $y) or die("Fout: imagecopyresized()");
imagegif($eind, $thumb_dir."$naam") or die("Fout: imagegif()");
imagedestroy($thumb);
imagedestroy($eind);
Of heb ik het mis?
Nogmaals even uitproberen..