Ik heb ooit eens een script gemaakt om files te uploaden en te resizen. Nu werkt dat niet bij alle foto's. Ik krijg dan niet altijd de waarde 2 bij onderstaande functie (size is ook 0):

$type = getimagesize($dest);
if($type[2] == 2){

Ik kreeg ineens het vermoeden dat dat misschien iets te maken heeft met bestandsgrootte. Kleine bestanden (onder de 2 MB) gaan zonder problemen. Zit er een beperking aan de bestandsgrootte bij de funcites die ik in onderstaand script gebruik?

Bedankt!

Gr,
Robert

<?php
function create_new_JPGimage ($dest,$source,$picture,$DB_pathname,$oldfiles)
{
//Het geselecteerde bestand wordt weggeschreven. Als het oude bestand hetzelfde bestand hadm dan is deze inmiddels verwijderd, dus mag geen problemen geven bij deze functie.
move_uploaded_file($source,$dest);

global $type;
$type = getimagesize($dest);
if($type[2] == 2){

//Voor de foto wordt een jpg-image aangemaakt. (imagecreatefromjpeg() returns an image identifier representing the image obtained from the given filename. )
$photo = imagecreatefromjpeg ($dest);

global $photodetails;
$photodetails=$photo;

//afmetingen bepalen
$source_x = imagesx($photo);
$source_y = imagesy($photo);
$ratio = $source_x/$source_y;

//de verhoudingen van het logo worden opnieuw bepaald (breedte is 210)
if($source_x >= 750){
$target_x = 750;
$target_y = ceil(750/$ratio);
}else{
$target_x = $source_x;
$target_y = $source_y;
}

//nieuwe image maken en wegschrijven naar dir (imagecreatetruecolor() returns an image identifier representing a black image of size x_size by y_size. )
$create_blank = imagecreatetruecolor ($target_x, $target_y);

//imagecopyresized() copies a rectangular portion of one image to another image.
ImageCopyResized($create_blank, $photo, 0, 0, 0, 0, $target_x, $target_y, $source_x, $source_y);

global $new_filename;
$new_filename = "logo" . $picture;

//imagejpeg() creates the JPEG file in filename from the image image. The image argument is the return from the imagecreatetruecolor() function.
ImageJpeg($create_blank,$DB_pathname . $new_filename,100);

//imagedestroy() frees any memory associated with image image. image is the image identifier returned by one of the image create functions, such as
Imagedestroy($photo);

if(unlink($dest)==0){
echo "<SCRIPT LANGUAGE=JavaScript>window.alert('Er is iets fout gegaan bij het verwijderen van de originele foto</SCRIPT>";
}
}
}
?>
Edit: Sorry verkeerd gedacht
Bierens schreef op 12.11.2006 15:13
Edit: Sorry verkeerd gedacht


Geen probleem.
Het gaat al mis voordat het bestandstype bepaald wordt, even verder zoeken......
Het gaat mis bij de volgende regel:

if($_FILES['picture']['size']>0){

Bij een aantal foto's geeft ie dus 0. Is deze functie dan afhankelijk van de grootte van het bestand???
maak van deze line is


if($_FILES['picture,size']=>0){
Dan krijg ik een foutmelding bij die line:

Parse error: parse error, unexpected T_DOUBLE_ARROW in C:\wamp\www\SuggestGraphics\Website\portfolio\client_new.php on line 68
De 'groter of gelijk aan' operator is in PHP '>=', die zul je dus moeten gebruiken en niet '=>'.
Die functie werkt nu, maar geeft nog steeds de size=0. Hoe kan dat toch???

Reageren