Ik zit met een probleem in een script waarin de geüploade afbeeldingen niet goed verwerkt worden.
Op sommige afbeeldingen wordt het script wél uitgevoerd zoals het hoort, maar bij de meeste afbeeldingen (deze beginnen en eindigen allemaal met de correcte hex code) krijg ik iedere keer een melding dat de afbeelding niet kon worden gemaakt.
En soms krijg ik het ook voor dat de grote versie van de afbeelding wél goed wordt verwerkt, en de kleine afbeelding niet.
Ik kan maar geen oplossing vinden (evenmin op het internet).
Het enige dat ik vind is dat er soms problemen kunnen optreden met verkeerd afgesloten jpg bestanden en de foto's van een bepaald cameratoestel, maar dit is hier niet van toepassing.
Het script loopt vast op regel 13 omdat alles waar $bron gebruikt wordt de mist in gaat.
Echter, dit is toch de manier om afbeeldingen in te lezen?
Kunnen jullie me verder helpen?
(In dit script gebruik ik imagecreatefromstring om aan tonen dat ik wel degelijk moeite heb gedaan
)
Php info:
GD Support enabled
GD Version bundled(2.0.28 compatible)
JPG Support enabled
Het gaat hier btw om Usbwebserver 3
Op sommige afbeeldingen wordt het script wél uitgevoerd zoals het hoort, maar bij de meeste afbeeldingen (deze beginnen en eindigen allemaal met de correcte hex code) krijg ik iedere keer een melding dat de afbeelding niet kon worden gemaakt.
En soms krijg ik het ook voor dat de grote versie van de afbeelding wél goed wordt verwerkt, en de kleine afbeelding niet.
Ik kan maar geen oplossing vinden (evenmin op het internet).
Het enige dat ik vind is dat er soms problemen kunnen optreden met verkeerd afgesloten jpg bestanden en de foto's van een bepaald cameratoestel, maar dit is hier niet van toepassing.
Het script loopt vast op regel 13 omdat alles waar $bron gebruikt wordt de mist in gaat.
Echter, dit is toch de manier om afbeeldingen in te lezen?
Kunnen jullie me verder helpen?
(In dit script gebruik ik imagecreatefromstring om aan tonen dat ik wel degelijk moeite heb gedaan
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
| ini_set("memory_limit", "64M"); $maximum_thumb_breedte = 180; $maximum_breedte = 640; $maximum_thumb_hoogte = 180; $maximum_hoogte = 480; $strFouten = ''; for($i = 0; $i < count($_FILES['afbeelding']['name']);$i++) { // Het probleem zit 'm denk ik hier, //(Dit imagecreatefromjpg alternatief werkt evenmin btw) $bron = @imagecreatefromstring(fread(fopen($_FILES['afbeelding']['tmp_name'][$i], "r"), fileSize($_FILES['afbeelding']['tmp_name'][$i]))); //Hoogte en breedte v/d afbeelding verkrijgen $breedte = imageSX($bron); $hoogte = imageSY($bron); //verhouding bepalen //nieuwe afmetingen berekenen if($breedte < $hoogte) { // Staand $type='staand'; if($hoogte > $maximum_hoogte) { $ratio = $hoogte/$breedte; $nieuwe_hoogte = $maximum_hoogte; $nieuwe_breedte = $nieuwe_hoogte/$ratio; } else { $ratio = $hoogte/$breedte; $nieuwe_breedte = $breedte; $nieuwe_hoogte = $hoogte; } if($hoogte > $maximum_thumb_hoogte) { $nieuwe_thumb_hoogte = $maximum_thumb_hoogte; $nieuwe_thumb_breedte = $nieuwe_thumb_hoogte/$ratio; } else { $nieuwe_thumb_breedte = $breedte; $nieuwe_thumb_hoogte = $hoogte; } } else { // Liggend $type='liggend'; if($breedte > $maximum_breedte) { $ratio = $breedte/$hoogte; $nieuwe_breedte = $maximum_breedte; $nieuwe_hoogte = $nieuwe_breedte/$ratio; } else { $nieuwe_hoogte = $hoogte; $nieuwe_breedte = $breedte; } if($breedte > $maximum_thumb_breedte) { $nieuwe_thumb_breedte = $maximum_thumb_breedte; $nieuwe_thumb_hoogte = $nieuwe_thumb_breedte/$ratio; } else { $nieuwe_thumb_hoogte = $hoogte; $nieuwe_thumb_breedte = $breedte; } } //Nieuwe true color afbeelding met nieuwe afmetingen genereren $doel = @imagecreatetruecolor($nieuwe_breedte, $nieuwe_hoogte); $doel_thumb = @imagecreatetruecolor($nieuwe_thumb_breedte, $nieuwe_thumb_hoogte); if(!$doel) $strFouten .= "Nieuwe afbeelding kan niet aangemaakt worden. Gelieve een andere jpg afbeelding te nemen."; //Kopieer en schaal oud naar nieuw imagecopyresampled($doel, $bron, 0,0,0,0,$nieuwe_breedte, $nieuwe_hoogte, $breedte, $hoogte); imagecopyresampled($doel_thumb, $bron, 0,0,0,0,$nieuwe_thumb_breedte, $nieuwe_thumb_hoogte, $breedte, $hoogte); //wegschryven die handel ob_start(); ImageJPEG($doel, '', 75); $buffer = ob_get_contents(); ob_end_clean(); ob_start(); ImageJPEG($doel_thumb, '', 75); $buffer_thumb = ob_get_contents(); ob_end_clean(); $bestandsnaam = '../img/'.$_FILES['afbeelding']['name'][$i]; $bestandsnaam_thumb = '../img/klein/'.$_FILES['afbeelding']['name'][$i]; // Duplicaten overschrijven if(is_file($bestandsnaam)) { if(!unlink($bestandsnaam)) { echo("Het bestaande bestand kon niet verwijderd worden"); } } if(is_file($bestandsnaam_thumb)) { if(!unlink($bestandsnaam_thumb)) { echo("Het bestaande bestand kon niet verwijderd worden"); } } $handle = fopen($bestandsnaam, 'ab'); //wegschrijven $handle_thumb = fopen($bestandsnaam_thumb, 'ab'); if(fwrite($handle, $buffer) && fwrite($handle_thumb, $buffer_thumb)) { //SQL $toevoeg_db->query("INSERT INTO tblimg(img_naam, img_beschrijving, img_type) VALUES('".$_FILES['afbeelding']['name'][$i]."', '".$_POST['arrBeschrijving'][$i]."', '".$type."' )"); } else { $strFouten .= "Er is een fout opgetreden bij het opladen van afbeelding nummer $i."; } fclose($handle); fclose($handle_thumb); } |
Php info:
GD Support enabled
GD Version bundled(2.0.28 compatible)
JPG Support enabled
Het gaat hier btw om Usbwebserver 3