Probleem met imagecreatefromjpeg()
Ik krijg een warning met imagecreatefromjpeg() en andere GD lib functies wanneer plaatjes spaties bevatten. Weet iemand hoe ik dit probleem kan oplossen behalve door de spaties uit het originele bestand weg te halen.
Bij voorbaat dank,
Niek
Laat eens een stukje code zien waarin het fout gaat?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$splittedName=explode('.',$imgNAME);
switch(strtolower($splittedName[count($splittedName)-1])){
case 'jpg': $photo = @imagecreatefromjpeg($imgFILE);break;
case 'jpeg': $photo = @imagecreatefromjpeg($imgFILE);break;
case 'gif': $photo = @imagecreatefromgif($imgFILE);break;
case 'png': $photo = @imagecreatefrompng($imgFILE);break;
}
?>
$splittedName=explode('.',$imgNAME);
switch(strtolower($splittedName[count($splittedName)-1])){
case 'jpg': $photo = @imagecreatefromjpeg($imgFILE);break;
case 'jpeg': $photo = @imagecreatefromjpeg($imgFILE);break;
case 'gif': $photo = @imagecreatefromgif($imgFILE);break;
case 'png': $photo = @imagecreatefrompng($imgFILE);break;
}
?>
$imgNAME en $imgFILE komt uit de database.
Gewijzigd op 01/01/1970 01:00:00 door Niek Berckmans
Letters (liefst lower case), cijfers en underscore.
Vooraleer je de file uploadt, zou je de naam door een functie kunnen sturen die ongewenste karakters verwijdert.
Die naam insert je in de db en je hernoemt bij het kopiëren de files ook naar die naam.
EDIT:
copy paste eens de src van zo'n image in je webbrowser. Je zal zien dat sommige karakters (zoals bv. de spatie) zullen vervangen worden.
Voor de spatie zou dat %20 moeten zijn, dacht ik.
Indien enkel de spatie een probleem is, zou je in $imgNAME gewoon de spaties kunnen vervangen door %20.
Zie eens of het daarmee lukt.
$imgNAME = str_replace (" ", "%20", $imgNAME);
Nog iets: volgens mij een betere manier om de extensie te vinden.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
Dit kan met de functie:
Ik zal eens kijken of de ini_set werkt.
zie http://us3.php.net/manual/en/function.rename.php
Zo zou je zowel de files zelf als de waarden in de db kunnen aanpassen.
Dat kan allemaal geautomatiseerd bebeuren.
Dan ben je in 1 keer van je probleem af.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
Al gedaan, bedacht dat er vast wel een rename function moest zijn. Dat was ook het geval. Bedankt iig!