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.
Hoeveel ik ook zoek, 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.
Kunnen jullie me verder helpen?
PHP Script:
Php info:PHP Code:
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);
}
GD Support enabled
GD Version bundled(2.0.28 compatible)
JPG Support enabled
Edit: Oplossing (na lang zoeken) eindelijk gevonden.. het probleem zat 'm in de client-sided MAX_FILE_SIZE.
- Imagecreatefromjpg probleem
-
03-06-2006, 08:36 #1
- Berichten
- 34
- Lid sinds
- 19 Jaar
Imagecreatefromjpg probleem
Laatst aangepast door Carlier B. : 03-06-2006 om 17:40
-
-
03-06-2006, 20:16 #2
- Berichten
- 26
- Lid sinds
- 18 Jaar
Haha, hier ook al :) Zoals ik op GoT ook al zei; voeg eens een e toe in de functienaam.
Imagecreatefromjpeg
-
03-06-2006, 22:19 #3
- Berichten
- 34
- Lid sinds
- 19 Jaar
:-p idd, origineel had ik 'm hier gepost. Maar bij gebrek aan een reactie toch maar op GoT gezet (waar -NMe- de 'bevrijdende' post heeft geplaatst).
Maar toch, goed opgemerkt ;-)
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic