Resize .PNG maakt bestandsgrootte 0
Ik heb een script waarmee ik afbeeldingen upload. Dit script verkleint dan de afbeelding en zet ze in een map nieuws. Als ik dit met een .jpg file doe gaat dit perfect. Doe ik dit echter met een .png file krijg ik een bestand in de map nieuws met een bestandsgrootte van 0 bytes. Ergens bij het verkleinen gaat het fout.
Kan iemand hier eens naar kijken?
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
$temp = explode(".", $_FILES["foto"]["name"]);
$extension = end($temp);
$file = time(). '.'. $extension;
move_uploaded_file($_FILES["foto"]["tmp_name"],$_SERVER['DOCUMENT_ROOT']. "/nieuws/". $file);
$fotopad = "http://". $_SERVER['SERVER_NAME']. "/nieuws/". $file;
//tot hier gaat het goed.........
resizeImage("../nieuws/". $file,"../nieuws/",200,150);
?>
$temp = explode(".", $_FILES["foto"]["name"]);
$extension = end($temp);
$file = time(). '.'. $extension;
move_uploaded_file($_FILES["foto"]["tmp_name"],$_SERVER['DOCUMENT_ROOT']. "/nieuws/". $file);
$fotopad = "http://". $_SERVER['SERVER_NAME']. "/nieuws/". $file;
//tot hier gaat het goed.........
resizeImage("../nieuws/". $file,"../nieuws/",200,150);
?>
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
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
<?
function resizeImage($sSrcPath, $sDestPath, $iDestWidth, $iDestHeight, $iDestQuality = 80) {
$aSrcMime = getimagesize($sSrcPath);
$aSrcName = array_pop(split("[/]", $sSrcPath));
$aSrcExtention = strtolower(array_pop(split("[.]", $sSrcPath)));
$sDestPath = $sDestPath. $aSrcName;
switch ($aSrcMime["mime"]) {
case "image/gif":
if ($aSrcExtention == "gif") {
$sSrcData = imagecreatefromgif($sSrcPath);
}
else {
return false;
}
break;
case "image/png":
if ($aSrcExtention == "png") {
$sSrcData = imagecreatefrompng($sSrcPath);
}
else {
return false;
}
break;
case "image/jpeg":
if ( ($aSrcExtention == "jpg") || ($aSrcExtention == "jpeg") ) {
$sSrcData = imagecreatefromjpeg($sSrcPath);
}
else {
return false;
}
break;
default:
return false;
break;
}
if ($sSrcData) {
$iSrcWidth = imagesx($sSrcData);
$iSrcHeight = imagesy($sSrcData);
$fSrcRatio = $iSrcWidth/$iSrcHeight;
$fDestRatio = $iDestWidth/$iDestHeight;
if ($fDestRatio > $fSrcRatio){
$iDestHeight = $iDestHeight;
$iDestWidth = $iDestHeight*$fSrcRatio;
}
else {
$iDestWidth = $iDestWidth;
$iDestHeight = $iDestWidth/$fSrcRatio;
}
$sDestData = imagecreatetruecolor($iDestWidth, $iDestHeight);
if (imagecopyresampled($sDestData, $sSrcData, 0, 0, 0, 0, $iDestWidth, $iDestHeight, $iSrcWidth, $iSrcHeight)) {
switch ($aSrcMime["mime"]) {
case "image/gif":
if ($aSrcExtention == "gif") {
if(imagegif($sDestData, $sDestPath, $iDestQuality)) {
imagedestroy($sSrcData);
return true;
}
else {
return false;
}
}
else {
return false;
}
break;
case "image/png":
if ($aSrcExtention == "png") {
if(imagepng($sDestData, $sDestPath, $iDestQuality)) {
imagedestroy($sSrcData);
return true;
}
else {
return false;
}
}
else {
return false;
}
break;
case "image/jpeg":
if ( ($aSrcExtention == "jpg") || ($aSrcExtention == "jpeg") ) {
if(imagejpeg($sDestData, $sDestPath, $iDestQuality)) {
imagedestroy($sSrcData);
return true;
}
else {
return false;
}
}
else {
return false;
}
break;
default:
return false;
break;
}
}
else {
return false;
}
}
else {
return false;
}
}
?>
function resizeImage($sSrcPath, $sDestPath, $iDestWidth, $iDestHeight, $iDestQuality = 80) {
$aSrcMime = getimagesize($sSrcPath);
$aSrcName = array_pop(split("[/]", $sSrcPath));
$aSrcExtention = strtolower(array_pop(split("[.]", $sSrcPath)));
$sDestPath = $sDestPath. $aSrcName;
switch ($aSrcMime["mime"]) {
case "image/gif":
if ($aSrcExtention == "gif") {
$sSrcData = imagecreatefromgif($sSrcPath);
}
else {
return false;
}
break;
case "image/png":
if ($aSrcExtention == "png") {
$sSrcData = imagecreatefrompng($sSrcPath);
}
else {
return false;
}
break;
case "image/jpeg":
if ( ($aSrcExtention == "jpg") || ($aSrcExtention == "jpeg") ) {
$sSrcData = imagecreatefromjpeg($sSrcPath);
}
else {
return false;
}
break;
default:
return false;
break;
}
if ($sSrcData) {
$iSrcWidth = imagesx($sSrcData);
$iSrcHeight = imagesy($sSrcData);
$fSrcRatio = $iSrcWidth/$iSrcHeight;
$fDestRatio = $iDestWidth/$iDestHeight;
if ($fDestRatio > $fSrcRatio){
$iDestHeight = $iDestHeight;
$iDestWidth = $iDestHeight*$fSrcRatio;
}
else {
$iDestWidth = $iDestWidth;
$iDestHeight = $iDestWidth/$fSrcRatio;
}
$sDestData = imagecreatetruecolor($iDestWidth, $iDestHeight);
if (imagecopyresampled($sDestData, $sSrcData, 0, 0, 0, 0, $iDestWidth, $iDestHeight, $iSrcWidth, $iSrcHeight)) {
switch ($aSrcMime["mime"]) {
case "image/gif":
if ($aSrcExtention == "gif") {
if(imagegif($sDestData, $sDestPath, $iDestQuality)) {
imagedestroy($sSrcData);
return true;
}
else {
return false;
}
}
else {
return false;
}
break;
case "image/png":
if ($aSrcExtention == "png") {
if(imagepng($sDestData, $sDestPath, $iDestQuality)) {
imagedestroy($sSrcData);
return true;
}
else {
return false;
}
}
else {
return false;
}
break;
case "image/jpeg":
if ( ($aSrcExtention == "jpg") || ($aSrcExtention == "jpeg") ) {
if(imagejpeg($sDestData, $sDestPath, $iDestQuality)) {
imagedestroy($sSrcData);
return true;
}
else {
return false;
}
}
else {
return false;
}
break;
default:
return false;
break;
}
}
else {
return false;
}
}
else {
return false;
}
}
?>
Gewijzigd op 17/08/2014 21:34:00 door D B
Eerste wat ik zou controleren, is of de inhoud van die variabelen kloppen.
Wat is hier de bedoeling van?
Wat ik vergeet te melden is dat dit uit een bestaand scriptje komt (heb dit niet zelf gemaakt). Maar het vreemde is dus dat het wel bij een .jpg perfect werkt maar niet bij een .png
Daarmee geef je geen antwoord op mijn vragen.
Net als 4 regels lager $iDestWidth = $iDestWidth;
Zouden er volgens mij beide uit kunnen.
De inhoud van de variabele zijn bij de .jpg file en bij de .png file precies gelijk, dus ik denk dat deze ook kloppen. (ik upload dezelfde file met beide extensies)
Bij png moet dat een waarde tussen 0 en 9 zijn.
Bedankt voor je reactie!
Dit werkt inderdaad.
Wat ik nu wel zie is dat een transparante achtergrond omgezet word naar een zwarte achtergrond.
Is dit nog ergens aan te passen?
Groeten!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18