transparantie bij het uploaden van foto's
Nu is het probleem dat als ik een gif upload hij de transparante kleure zwart maakt.
Wie weet in welke richting ik de oplossing moet gaan zoeken?
Uploaden is gewoon iets copiëren, er wordt niets aan het bestand gewijzigd.
Zoals ik het gemaakt heb schijnbaar wel.
Ik zal mijn script meegeven
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<?if (!isSet($_POST['submit']))
{
show_form();
}
elseif ($_FILES['bestand']['size']>"1000000")
{
echo "Het bestand is te groot en duurt te lang om te uploaden.<br/>
Maak het bestand kleiner of :<br/>";
showform();
}
else
{
handle_form();
}
}
////
function handle_form()
{
if (isSet($_POST['submit']) && is_uploaded_file($_FILES['bestand']['tmp_name']))
{
$filename = $_FILES['bestand']['tmp_name'];
$size = getimagesize($filename);
$breed = $size[0];
$hoog = $size[1];
if ($breed > $hoog)
{
$factor = $breed/350;
}
else
{
$factor = $hoog/350;
}
// maak de nieuwe maten
$new_width = $breed / $factor;
$new_height = $hoog / $factor;
echo " nieuwe breedte = ".$new_width." nieuwe hoogte = ".$new_height;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
echo $_FILES['bestand']['type'];
if ($_FILES['bestand']['type']=='image/gif')
{
//echo "Het is een gif bestand";
$image = imagecreatefromgif($filename);
}
elseif ($_FILES['bestand']['type']=='image/jpeg' || 'image/pjpeg')
{
echo "Het is een jpg bestand";
$image = imagecreatefromjpeg($filename);
}
else
{
echo "alleen gif of jpg bestanden kunnen ingestuurd worden.";
exit;
}
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $breed, $hoog);
// schrijf het bestand weg
if (!imagejpeg($image_p, "../images/artikelen/".$_FILES['bestand']['name']."", 100))
{
echo "niet gelukt";
}
else
{
echo "upload en resample van grote foto OK";
}
unlink($_FILES['bestand']['tmp_name']);
thumb();
}
else
{
show_form();
}
}
function thumb()
{ //bekijk de huidige maten
echo $_FILES['bestand']['tmp_name'];
$filename = "../images/artikelen/".$_FILES['bestand']['name'];
$size = getimagesize($filename);
$breed = $size[0];
$hoog = $size[1];
if ($breed > $hoog)
{
//echo "breed ".$breed." > hoog ".$hoog."";
$factor = $breed/100;
}
else
{
//echo "breed ".$breed." < hoog ".$hoog."";
$factor = $hoog/100;
}
//echo " factor = ".$factor;
// maak de nieuwe maten
$new_width = $breed / $factor;
$new_height = $hoog / $factor;
echo " nieuwe breedte = ".$new_width." nieuwe hoogte = ".$new_height;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
echo $_FILES['bestand']['type'];
if ($_FILES['bestand']['type']=='image/gif')
{
//echo "Het is een gif bestand";
$image = imagecreatefromgif($filename);
}
elseif ($_FILES['bestand']['type']=='image/jpeg' || 'image/pjpeg')
{
echo "Het is een jpg bestand";
$image = imagecreatefromjpeg($filename);
}
else
{
echo "alleen gif of jpg bestanden kunnen ingestuurd worden.";
exit;
}
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $breed, $hoog);
// schrijf het bestand weg
if (!imagejpeg($image_p, "../images/thumb/".$_FILES['bestand']['name']."", 100))
{
echo "niet gelukt";
}
else
{
echo "<img src=\"../images/thumb/".$_FILES['bestand']['name']."\">bestandsnaam = ".$_FILES['bestand']['name']."<br/>";
echo "<img src=\"../images/artikelen/".$_FILES['bestand']['name']."\"><br/>";
show_form();
}
}function show_form()
{
echo "Kies een bestand om naar de server te uploaden:<br>\n";
echo "<form action='".$_SERVER['PHP_SELF']."' method='post' ";
echo "enctype=\"multipart/form-data\">\n";
// Zet de maximale bestandsgrootte (VERPLICHT!!)
echo "<input type='hidden' name='MAX_FILE_SIZE' value='100000'>";
echo "bestand: <input type='file' name='bestand' size='20'><br>\n";
echo "<input type='submit' name='submit' value='VERZENDEN'> \n";
echo "<input type='reset' name='reset' value='leeg maken'></td>\n";
echo "</form>\n";
}
echo "<a href=\"toon_thumb.php\" target=\"blank\">Toon thumbs</a><br/>";
echo "<a href=\"javascript:window.close();\">Close This Window</a>";
?>
{
show_form();
}
elseif ($_FILES['bestand']['size']>"1000000")
{
echo "Het bestand is te groot en duurt te lang om te uploaden.<br/>
Maak het bestand kleiner of :<br/>";
showform();
}
else
{
handle_form();
}
}
////
function handle_form()
{
if (isSet($_POST['submit']) && is_uploaded_file($_FILES['bestand']['tmp_name']))
{
$filename = $_FILES['bestand']['tmp_name'];
$size = getimagesize($filename);
$breed = $size[0];
$hoog = $size[1];
if ($breed > $hoog)
{
$factor = $breed/350;
}
else
{
$factor = $hoog/350;
}
// maak de nieuwe maten
$new_width = $breed / $factor;
$new_height = $hoog / $factor;
echo " nieuwe breedte = ".$new_width." nieuwe hoogte = ".$new_height;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
echo $_FILES['bestand']['type'];
if ($_FILES['bestand']['type']=='image/gif')
{
//echo "Het is een gif bestand";
$image = imagecreatefromgif($filename);
}
elseif ($_FILES['bestand']['type']=='image/jpeg' || 'image/pjpeg')
{
echo "Het is een jpg bestand";
$image = imagecreatefromjpeg($filename);
}
else
{
echo "alleen gif of jpg bestanden kunnen ingestuurd worden.";
exit;
}
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $breed, $hoog);
// schrijf het bestand weg
if (!imagejpeg($image_p, "../images/artikelen/".$_FILES['bestand']['name']."", 100))
{
echo "niet gelukt";
}
else
{
echo "upload en resample van grote foto OK";
}
unlink($_FILES['bestand']['tmp_name']);
thumb();
}
else
{
show_form();
}
}
function thumb()
{ //bekijk de huidige maten
echo $_FILES['bestand']['tmp_name'];
$filename = "../images/artikelen/".$_FILES['bestand']['name'];
$size = getimagesize($filename);
$breed = $size[0];
$hoog = $size[1];
if ($breed > $hoog)
{
//echo "breed ".$breed." > hoog ".$hoog."";
$factor = $breed/100;
}
else
{
//echo "breed ".$breed." < hoog ".$hoog."";
$factor = $hoog/100;
}
//echo " factor = ".$factor;
// maak de nieuwe maten
$new_width = $breed / $factor;
$new_height = $hoog / $factor;
echo " nieuwe breedte = ".$new_width." nieuwe hoogte = ".$new_height;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
echo $_FILES['bestand']['type'];
if ($_FILES['bestand']['type']=='image/gif')
{
//echo "Het is een gif bestand";
$image = imagecreatefromgif($filename);
}
elseif ($_FILES['bestand']['type']=='image/jpeg' || 'image/pjpeg')
{
echo "Het is een jpg bestand";
$image = imagecreatefromjpeg($filename);
}
else
{
echo "alleen gif of jpg bestanden kunnen ingestuurd worden.";
exit;
}
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $breed, $hoog);
// schrijf het bestand weg
if (!imagejpeg($image_p, "../images/thumb/".$_FILES['bestand']['name']."", 100))
{
echo "niet gelukt";
}
else
{
echo "<img src=\"../images/thumb/".$_FILES['bestand']['name']."\">bestandsnaam = ".$_FILES['bestand']['name']."<br/>";
echo "<img src=\"../images/artikelen/".$_FILES['bestand']['name']."\"><br/>";
show_form();
}
}function show_form()
{
echo "Kies een bestand om naar de server te uploaden:<br>\n";
echo "<form action='".$_SERVER['PHP_SELF']."' method='post' ";
echo "enctype=\"multipart/form-data\">\n";
// Zet de maximale bestandsgrootte (VERPLICHT!!)
echo "<input type='hidden' name='MAX_FILE_SIZE' value='100000'>";
echo "bestand: <input type='file' name='bestand' size='20'><br>\n";
echo "<input type='submit' name='submit' value='VERZENDEN'> \n";
echo "<input type='reset' name='reset' value='leeg maken'></td>\n";
echo "</form>\n";
}
echo "<a href=\"toon_thumb.php\" target=\"blank\">Toon thumbs</a><br/>";
echo "<a href=\"javascript:window.close();\">Close This Window</a>";
?>
met bijv. zoiets:
$image = "blad.gif";
$im = imagecreatefromgif($image);
$white = imageColorAllocate ($im, 255, 255, 255);
$trans = imagecolortransparent($im,$white);
Ja, jij bent je plaatje aan het veranderen. Daar kan ik je helaas niet bij helpen. Dus even wachten op iemand anders die dat wel weet.
Het script is voor een webwinkel vandaar.