Bilderflut darstellen, dazu Infos erfassen
Linuchs
- projektverwaltung
Hallo,
ich bin etwas ratlos, wie ich die folgende Aufgabe mit möglichst geringem Aufwand in der Freizeit erledigen kann.
im Zusammenhang mit einem Jahrgangstreffen mehrerer Schulklassen habe ich 200 digitale Bilder bekommen, die nun "irgendwie" sinnvoll mit den Beteiligten aufbereitet werden sollen. Denkbar, dass noch Bilder nachgereicht werden.
Die Bilder zeigen 1 .. n Personen und sollen einen Titel bekommen sowie die Namen der dargestellten Personen.
Meine erste Idee: Die Bilder auf einer oder mehreren Webseiten zeigen, darunter eine Eingabemöglichkeit, welcher Anlass das ist und wer da zu sehen ist. Das "wer" geht wohl nur mit den Personen angehefteten Nummern.
Mir graust schon vor der Idee, die 200 Fotos von tw. 13 MB auf Darstellungsgröße zu bringen und jeder Person eine Zahl anzuheften.
Und dann weiter ... eine Datenbank mit Tabelle A, die nach und nach die Namen der erkannten Leute aufnimmt, Tabelle B mit den Dateinamen und Kurzbeschreibung der Fotos sowie Tabelle C, die Personen zu Fotos zuordnet.
Ich glaube, ich denke zu kompliziert, wie kann man das einfacher machen? Ich zweifle sehr daran, dass die Beteiligung den ganzen Aufwand rechtfertigt.
Linuchs
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.
Schau Dir mal kphotoalbum an. Kann laut Paketbeschreibung auch HTML-Galerien erstellen.
Es gibt dann noch Kandidaten:
Fotoxx ist ein Programm, um digitale Fotos aufzubessern. Mit ihm können
Sie große Bildordner mit Vorschaubildern durchsuchen, helle und dunkle
Bilder zu HDR-Bildern (high dynamic range) verschmelzen, so dass Details
in hellen und dunklen Bereichen besser sichtbar werden, sich überlappende
Bilder zu Panoramen zusammensetzen, die Helligkeit und Farbsättigung für
verschiedene Helligkeitsbereiche unterschiedlich anpassen, Nebel- und
Trübheitseffekte durch Entfernen der »Weißheit« und Intensivieren der
Farben abmindern, Bilder (in 90°-Schritten) rotieren, schräge Bilder
begradigen, durch Blitzlichter entstandene rote Augen entfernen, Bilder
schärfen, skalieren oder zurecht schneiden, Rauschen in dunklen Bildern
unterdrücken, die Farbtiefe verändern und Bilder durch Ziehen der Maus
verzerren.
gThumb ist ein fortschrittlicher Bildbetrachter und -browser. Er hat viele
nützliche Funktionen, wie das Durchsuchen des Dateisystems, eine Diashow,
Bilderkataloge, Erzeugen eines Internet-Fotoalbums, Daten aus Kameras
importieren, Bilder-CDs brennen, Dateien stapelweise verarbeiten sowie
schnelle Bildbearbeitungsfunktionen wie Transformationen und
Farbmanipulationen.
Im Terminal:
cthumb erlaubt es Ihnen themen-fähige Foto-Alben fürs WWW zu erstellen,
d.h. Sammlungen von digitalen Bildern mit kleinen Thumbnails und
Überschriften. Zusätzlich erlaubt es verschiedene Ansichten der
Bildersammlung. Ein Album besteht aus einer Reihe von Seiten, die
ihrerseits aus einer Sammlung von Bildern bestehen. Für jede Seite (und
jedes Bild) können Sie verschiedene Anmerkungen anfügen. cthumb wird für
jeden Anmerkungstyp eine eigene Version der Seite erzeugen.
photon: Ein Python-basierter Fotoalbum-Generator mit einem sauberen Design, der
von der Kommandozeile gestartet wird. Die HTML-Ausgabe kann mit Vorlagen
konfiguriert werden.
Features:
* generates static HTML pages
* slideshow (use of javascript is optional)
* can use gimp to resize picture
* keyboard navigation between images
* works in any browser (Mozilla, Netscape Navigator 4.x, Konqueror, Opera)
* each image can have a comment (with HTML tags)
* image information (if taken from a digital picture) can be displayed
* thumbnail image size can be selected by the user
* output images can be scaled down
* control over the number of thumbnails in a page
Jörg Reinholz
Hallo,
Ich glaube, ich denke zu kompliziert, wie kann man das einfacher machen? Ich zweifle sehr daran, dass die Beteiligung den ganzen Aufwand rechtfertigt.
Demoversion mit Mehrfachauswahl, der Möglichkeit zum Skalieren, Titel und Beschreibung hinzuzufügen.
MfG
@@Linuchs:
nuqneH
Meine erste Idee: Die Bilder auf einer oder mehreren Webseiten zeigen, darunter eine Eingabemöglichkeit, welcher Anlass das ist und wer da zu sehen ist. Das "wer" geht wohl nur mit den Personen angehefteten Nummern.
Das Wer geht mit Computer Vision: automatische Gesichtserkennung. Nur möchte man sicher nicht die von Facebook oder anderer Spyware 2.0 einsetzen.
Qapla'
Hi,
im Zusammenhang mit einem Jahrgangstreffen mehrerer Schulklassen habe ich 200 digitale Bilder bekommen, die nun "irgendwie" sinnvoll mit den Beteiligten aufbereitet werden sollen. Denkbar, dass noch Bilder nachgereicht werden.
Meine erste Idee: Die Bilder auf einer oder mehreren Webseiten zeigen, darunter eine Eingabemöglichkeit, welcher Anlass das ist und wer da zu sehen ist. Das "wer" geht wohl nur mit den Personen angehefteten Nummern.
von den teilweise angesprochenen praktischen Aspekten mal ganz abgesehen: Das hört sich für mich so an, als wüssten die abgebildeten Personen zum Teil gar nichts von ihrem Glück. Also kommt noch ein rechtliches Problem dazu.
Denn eigentlich musst du dich vor einer Veröffentlichung auch versichern, dass alle abgebildeten und erkennbaren Personen dieser Veröffentlichung auch zustimmen. Die Bilder zur Identifikation auf eine Webseite zu stellen, ist aber schon eine Veröffentlichung, bevor eine solche Zustimmung vorliegt. Catch-22. ;-)
Viel Erfolg,
Martin
Die Bilder zur Identifikation auf eine Webseite zu stellen, ist aber schon eine Veröffentlichung, bevor eine solche Zustimmung vorliegt.
Abgesehen davon, dass man diese Webseite und die Bilder nicht für jeden ("öffentlich") zugänglich machen muss.
Betreffs des verlinkten Skriptes:
Ab Apache 2.4 ist ein stärkeres Password-Hashing möglich.
Jörg Reinholz