Jörg Reinholz: Bilderflut darstellen, dazu Infos erfassen

Beitrag lesen

Mir graust schon vor der Idee, die 200 Fotos von tw. 13 MB auf Darstellungsgröße zu bringen

Dabei kann Dir der Computer helfen. Hier ein Ausschnitt daraus, wie ein Skript das für mich erledigt, das sollte Dir Anhaltspunkte bringen, wie Du das erledigen kannst. Darüber hinaus gibt es dafür auch fertige Software.

# test auf Fehler:  
if ($_FILES['file']['error']) {  
	die ('Beim Hochladen trat ein Fehler auf. Versuchen Sie es erneut');  
}  
  
# Test auf Bild:  
if ($_FILES['file']['type'] != 'image/jpeg'  
&& $_FILES['file']['type'] != 'image/jpg'  
&& $_FILES['file']['type'] != 'image/png'  
&& $_FILES['file']['type'] != 'image/bmp'  
&&  $_FILES['file']['type'] != 'image/gif'  
) {  
	die ('Die hochgeladene Datei ist kein JPG/PNG/GIF-Bild.');  
}  
  
# Test auf Dateigröße:  
if ($_FILES['file']['size'] < 100) {  
	die ('Die hochgeladene Datei ist zu klein. Laden Sie eine größere Version hoch.');  
}  
  
if ((! function_exists("imagecreatefromgif")) && $_FILES['file']['type'] != 'image/gif') {  
	die ('Die hochgeladene Datei ist ein GIF-Bild, dass aus patentrechtlichen Gründen leider nicht verarbeitet werden kann. <br><br>Lösung:<br>Laden Sie eine andere Version des Bildes (.jpg, .png oder .bmp) hoch.');  
}  
  
$picdir      = $GLOBALS['PicFilesDir'];  
$thumbdir    = $GLOBALS['ThumbFilesDir'];  
$originaldir = $GLOBALS['originalFilesDir'];  
  
if ($_FILES['file']['type'] == 'image/jpeg' OR $_FILES['file']['type'] == 'image/jpg') {  
	$image = imagecreatefromjpeg($_FILES['file']['tmp_name']);  
	$_FILES['file']['name']=str_replace('.jpg','.png',$_FILES['file']['name']);  
	$_FILES['file']['name']=str_replace('.JPG','.png',$_FILES['file']['name']);	  
	$_FILES['file']['name']=str_replace('.jpeg','.png',$_FILES['file']['name']);	  
}  
if ($_FILES['file']['type'] == 'image/png') {  
	$image = imagecreatefrompng($_FILES['file']['tmp_name']);  
}  
if ($_FILES['file']['type'] == 'image/bmp') {  
	$image = imagecreatefromwbmp($_FILES['file']['tmp_name']);  
	$_FILES['file']['name']=str_replace('.png','.png',$_FILES['file']['name']);	  
	$_FILES['file']['name']=str_replace('.PNG','.png',$_FILES['file']['name']);  
}  
if ($_FILES['file']['type'] == 'image/gif') {  
	$image = imagecreatefromgif($_FILES['file']['tmp_name']);  
	$_FILES['file']['name']=str_replace('.gif','.png',$_FILES['file']['name']);	  
	$_FILES['file']['name']=str_replace('.GIF','.png',$_FILES['file']['name']);  
}  
  
list($width_orig, $height_orig) = getimagesize($_FILES['file']['tmp_name']);  
  
if (file_exists($picdir.$_FILES['file']['name'])) {  
  $fileNameExtra='_'.date('YmdHis');  
  $_FILES['file']['name']=$_FILES['file']['name'].$fileNameExtra;  
} else {  
	$fileNameExtra=false;  
}  
  
  
# Bild auf 450px breite verkleinern und in bilder speichern  
  
$width=450;  
if ($width >= $width_orig) {  
	$width=$width_orig;  
	$height=$height_orig;  
} else {  
	$faktor=$width/$width_orig;  
	$height=$height_orig*$faktor;  
}  
$image_p = imagecreatetruecolor($width, $height);  
$weiss = imagecolorallocate($image_p, 255, 255, 255);  
imagefilledrectangle($image_p, 0, 0, $width, $height, $weiss);  
$trans_colour = imagecolorallocatealpha($image_p, 255, 255, 255, 127);  
imagefill($image_p, 0, 0, $trans_colour);  
  
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);  
imagepng($image_p, $picdir.$_FILES['file']['name'],3);  
  
# Bild auf 125px breite verkleinern und in thumbnails speichern  
  
$width=120;  
if ($width > $width_orig) {  
	$width=$width_orig;  
	$height=$height_orig;  
} else {  
	$faktor=$width/$width_orig;  
	$height=$height_orig*$faktor;  
}  
$image_p = imagecreatetruecolor($width, $height);  
$weiss = imagecolorallocate($image_p, 255, 255, 255);  
imagefilledrectangle($image_p, 0, 0, $width, $height, $weiss);  
$trans_colour = imagecolorallocatealpha($image_p, 255, 255, 255, 127);  
imagefill($image_p, 0, 0, $trans_colour);  
  
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);  
imagepng($image_p, $thumbdir.$_FILES['file']['name'],9);  
  
# Speichern des Bildes in Original-Größe:  
$image_p = imagecreatetruecolor($width_orig, $height_orig);  
$weiss = imagecolorallocate($image_p, 255, 255, 255);  
imagefilledrectangle($image_p, 0, 0, $width_orig, $height_orig, $weiss);  
$trans_colour = imagecolorallocatealpha($image_p, 255, 255, 255, 127);  
imagefill($image_p, 0, 0, $trans_colour);  
  
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width_orig, $height_orig, $width_orig, $height_orig);  
imagepng($image_p, $originaldir.$_FILES['file']['name'],1);  
  
# Löschen des Uploads  
unlink ($_FILES['file']['tmp_name']);  

und jeder Person eine Zahl anzuheften.

Tja. Auch das könnte man weitgehend automatisieren. Nur vermute ich, die dazu notwendige Software (Gesichtserkennung) ist nicht frei verfügbar.