In ein Verzeichnis werden laufend per FTP Bilder hochgeladen. Der folgende Code soll Bilder, die noch nicht verkleinert sind, verkleinern, den Dateinamen mit einem vorgesetzten "new_" versehen und speichern. Er wird alle 1 sec per XMLHttpRequest aufgerufen. Es dürfen aber natürlich nur Bilder verkleinert werden, die schon vollständig hochgeladen sind. Mit getimagesize() wollte ich feststellen, ob der File ein gültiges JPG ist, aber das scheint nicht zu klappen. Immer wieder kriege ich zwischendurch Bilder, die schwarz sind, die erwarteten Maße haben, aber eine viel zu kleine Dateigröße, die also anscheinend vom Code bearbeitet worden sind, bevor sie noch ganz da waren. Es sieht so aus, als ob nur das Ergebnis von imagecreatetruecolor() gespeichert wird, aber imagecreatefromjpeg() fehlgeschlagen ist.
if ($dh = opendir($dir)) {
while (false !== ($file = readdir($dh))) {
if (eregi(".jpg$",$file) && !eregi("^new_",$file) && !is_file($dir."/new_".$file)) {
if(getimagesize($dir."/".$file) != FALSE){
$image = $dir."/".$file;
list($oldwidth,$oldheight) = getimagesize($image);
if($oldwidth > 320 || $oldheight > 242){
if($oldwidth > $oldheight){
$newwidth = 320;
$newheight = $oldheight/$oldwidth*320;
}
else{
$newheight = 242;
$newwidth = $oldwidth/$oldheight*242;
}
$resized = imagecreatetruecolor($newwidth,$newheight) ;
$source = imagecreatefromjpeg($image) ;
imagecopyresampled($resized,$source,0,0,0,0,$newwidth,$newheight,$oldwidth,$oldheight);
imagejpeg($resized,$dir."/"."new_".$file);
imagedestroy($resized);
imagedestroy($source);
}
}
}
}
}
Wie kann ich sicherstellen, dass die Bilder erst bearbeitet werden, wenn sie vollständig hochgeladen sind?
Gruß und Dank
Martin