Personen im Bild

Hast Du auch ein großes Bilderalbum mit vielen Erinnerungen an längst vergangene Tage?

Ordentliche Fotografen beschlagworten ihre Bilder nach jedem Fotoshooting und haben es dann später leichter, Bilder wiederzufinden. Aber das Beschlagworten selbst ist keine Kleinigkeit. Die gewählten Begriffe wollen wohl überlegt sein. Jeder Begriff, der fehlt, muss in Nachhinein für alle anderen Bilder nachgetragen werden, wenn man wirklich ultimative Ordnung anstrebt.

Zentral in einem solchen Familienalbum sind die Personen. Die händische Zuordnung von Namen zu den Bildern ist eine mühsame Angelegenheit, und es wird immer schlimmer, je länger man sich damit Zeit lässt.

Mein Lieblingsprogramm für das Arbeiten mit Bildern ist Google Picasa. Es ist zwar schon ein Methusalem, doch in der Disziplin “Gesichtserkennung” ist es bisher unschlagbar. Ferdinand hat mir einmal Adobe Lightroom geborgt und ich habe dessen Gesichtserkennung ausprobiert. Es zeigte sich, dass das kostenlose Picasa trotz seines Alters dem kostenpflichtigen Adobe-Programm in dieser Disziplin überlegen ist. Während man bei Picasa den Vorgang der Erkennung wärend der Arbeit mit dem Programm nicht wahrnimmt, friert bei Lightroom der Rechner geradezu ein, wenn es mehr als nur ein paar Gesichter zu erkennen gibt. Daher habe ich damals von der weiteren Verwendung von Adobe Lightroom abgesehen und konzentrierte mich auf Google Picasa.

Metadaten

Metadaten dienen zur weitergehenden Bildbeschreibung. Sie sind die Grundlage zum Wiederfinden von Bildern im Rahmen von Bildverwaltungsprogrammen. Die Metadaten helfen bei Fragestellungen der Art: “Zeige mir alle Bilder, die mit der Kamera XY aufgenommen wurden und auf denen die Tante Mitzi zu sehen ist.”

Ein Bild wird mit Metadaten in mehreren Eigenschaftengruppen beschrieben wie zum Beispiel

  • Ort (Adresse, GPS)
  • Datum (Jahrzehnt, Jahr, Datum)
  • Autor (Name, Adresse, Copyrightvermerk…)
  • Technische Details (Kamera, Aufnahmedaten…)
  • Anlass (Urlaub, Hochzeit, Fußballspiel…)
  • Gegenstände (Was ist auf dem Bild zu sehen)
  • Personen

Diese Metadaten sind quer über die die EXIF-Daten verteilt (GPS, Personen, Kamera, Autor…).

Bildverwaltungsprogramme

Wenn man sich in einem Bildverwaltungsprogramm bewegt wie etwa Google Picasa, Adobe Bridge oder Adobe Lightroom, kann man nach vielen der obigen Daten filtern. Alle Bilder aus “1976”, alle Bilder in “Scheibbs” usw., wobei eben “1976” und “Scheibbs” vordefinierte Schlagworte sind.

Bildpublikation

Die Publikation von Bildern erfolgt über Galerie-Plugins in CMS-Systemen und orientiert sich an Schlagworten. Wir verwenden praktisch ausschließlich WordPress. Der Platzhirsch bei den Bildpublikations-Plugins ist NextGen.

NextGen verwaltet Galerien. Eine Galerie entspricht einem Ordner. Es kann beliebig viele Ordner geben, aber sie können nicht verschachtelt sein. NextGen kann also nicht die Ordnerstruktur eines PCs nachbilden. NextGen erlaubt die Definition von Alben. Ein Album fasst mehrere Galerien zusammen. Aber NextGen kann auch Bilder aufgrund ihrer Stichworte zu einem Album zusammenfassen und das quer durch alle Galerien. Damit das aber gut funktioniert, müssen die Bilder gut beschlagwortet sein.

Das Problem sind aber Personen, denn sie werden zwar von Google Picasa nahezu perfekt erkannt – und daher erspart man sich eine Menge händischer Zuordnung – aber diese Namen stehen nicht als Schlagworte zur Verfügung wie man an dem Beispiel weiter unten sieht.

Innerhalb von Google Picasa kann man nach einzelnen Personen filtern, außerhalb von Google Picasa ist aber Endstation. Auch das höchst professionelle Programm Adobe Bridge zeigt die Namen der abgebildeten Personen in den Metadaten nicht, obwohl der Eintrag besteht.

Gesichtserkennung in Picasa

Picasa erkennt automatisch Gesichter in allen Bildern und stapelt gleiche Bilder zuerst in einem Album “unbekannt”. Kennt man ein solches Gesicht, schreibt man den Namen unter das Bild. Mit dieser Eintragung werden auch alle anderen Bilder dieser Person benannt. Wenn ein Gesicht nicht erkannt wird, kann man es manuell kennzeichnen.

Picasa hat daher zwei Beschreibungsgruppen:

  • Personen
  • Stichworte

Innerhalb von Picasa kann man über das Suchfeld sowohl nach Stichworten als auch nach Personen suchen. Zusätzlich wird auch in den Ordnernamen und Dateinamen und Dateititeln gesucht.

Wenn man nun die so beschlagworteten Bilder publiziert, stellt man fest, dass in den diversen Galerien zwar die Stichworte erkannt, angezeigt werden und auch als Auswahlkriterium dienen können, nicht aber die Namen der Personen.

Sogar das weit verbreitete WordPress-Galerie-Programm NextGen arbeitet nur mit Schlagworten aber mit sonst keinen anderen EXIF-Daten. Es kann zwar einige der Metadaten anzeigen, nicht aber danach filtern.

Damit man also für die Publikation auf einer Webseite Bilder mit bestimmten Personen auswählen kann, müssen die Namen als Schlagwort im Bild eingetragen sein. Die Fragen in diesem Zusammenhang sind daher:

  • Wo und wie werden die Personendaten in einem Bild gespeichert?
  • Wie kann man die Personennamen in die Liste der Schlagworte kopieren?

Metadaten anzeigen und bearbeiten

Nicht einmal das professionelle Programm Adobe Bridge findet die von Picasa markierten Personennamen. Der Grund wird wohl sein, dass das Kennzeichnen von Bereichen/Personen auf einem Bild auch die Funktionalität der Gesichtserkennung voraussetzt und das können nur sehr wenige Programme.

Mit dem Tool ExifToolGUI, das seinerseits das Kommandozeilenprogramm ExifTool benutzt kann man aber alle Winkel der Bildbeschreibung ausspionieren.

Hinweis: Jeder Bearbeitungsvorgang durch EXIFTOOL legt eine Kopie der ursprünglichen Datei an, indem an den Namen der Text “_original” angehängt wird.

Metadaten im ExifToolGUI

Nach einigem Stöbern in den diversen Metadatengruppen fand ich die Namen der Personen im Feld -XMP-mwg-rs:RegionName. Die XY-Koordinaten und Höhe und Breite des Gesichtsbereichs befinden sich in den Tags Region Area X, Y, W, H der Typ "face" im Tag Region Type. Weitere Hinweise zum Programm findet man im Beitrag “ExifToolGUI”.

Auf diese Personennamen im Feld -XMP-mwg-rs:RegionName können Programme zur Publikation von Bildern nicht zugreifen. Um dennoch nach diesen Namen filtern zu können, wäre es praktisch, diese Namen durch ein Programm zu den Schlagworten hinzuzufügen.

PowerShell kopiert Namen

Nachdem also alle Personen in allen Bildern namentlich gekennzeichnet sind, kann man mit einem PowerShell-Programm die Namen der Personen zu den Schlagworten hinzuzufügen. Die Grundlagen zu den folgenden Kommandozeilen findet man im Beitrag “Bildattribute”. Zur Entwicklung benötigt man das im Beitrag “Bildattribute” beschriebene Programm EXIFTOOL und die Windows PowerShell ISE.

Namen auslesen

EXIFTOOL kann alle Metadaten mit einem einfachen Kommandozeilenbefehl auslesen. Die Beschriftung der Personenbilder durch Namen erfolgte also in Google Picasa. Im folgenden Beispiel werden die Namen der abgebildeten Personen ausgegeben.

PS S:\desktop> exiftool -XMP-mwg-rs:RegionName 1976-2-001.jpg
Region Name                     : Raimund Rammel, Josef Fiala, Johanna Rammel, Silvia Fiala, Martha Fiala

Schlagworte auslesen

Die Schlagworte sind in zwei Feldern zu finden: -XMP-dc:Subject und -IFD0:XPKeywords.

PS S:\onedrive\desktop> exiftool -IFD0:XPKeywords 1976-2-001.jpg                                                        XP Keywords                     : 1976;Scheibbs
PS S:\onedrive\desktop> exiftool -XMP-dc:Subject 1976-2-001.jpg
Subject                         : 1976, Im Burgfried 50, Scheibbs

Die Bildergalerien nutzen das Feld -XMP-dc:Subject. Das Trennzeichen ist der Beistrich.

Schlagworte ergänzen

Die folgenden Aufrufzeilen speichern die Schlagworte in der Variablen $tags und die Personennamen in der Variablen $persons. Die $persons werden an die $tags mit einem Trennzeichen angehängt und danach ausgegeben. Schließlich werden die früheren Stichworte durch mit den durch die Personennamen erweiterten Stichworte überschrieben.

PS S:\desktop> $tags = exiftool -s -s -s -XMP-dc:Subject 1976-2-001.jpg                                        PS S:\desktop> $tags                                                                                           1976, Im Burgfried 50, Scheibbs
PS S:\desktop> $persons = exiftool -s -s -s -XMP-mwg-rs:RegionName 1976-2-001.jpg                              PS S:\desktop> $persons                                                                                        Raimund Rammel, Josef Fiala, Johanna Rammel, Silvia Fiala, Martha Fiala
PS S:\desktop> $tags = $tags + ", " + $persons  
PS S:\desktop> $tags                                                                                           1976, Im Burgfried 50, Scheibbs, Raimund Rammel, Josef Fiala, Johanna Rammel, Silvia Fiala, Martha Fiala
PS S:\onedrive> exiftool -XMP-dc:Subject=$tags 1976-2-001.jpg                                                   Warning: [minor] Fixed incorrect URI for xmlns:MicrosoftPhoto - 1976-2-001.jpg
1 image files updated
PS S:\onedrive> $tags = exiftool -s -s -s -XMP-dc:Subject 1976-2-001.jpg                                        PS S:\onedrive> $tags
1976, Im Burgfried 50, Scheibbs, Raimund Rammel, Josef Fiala, Johanna Rammel, Silvia Fiala, Martha Fiala

Normalerweise liefert das ExifTool eine formatierte Zeile bestehend aus dem Namen, einem Doppelpunkt und den eigentlichen Daten. Die Optionen -s -s -s bewirken, dass die Formatierung entfernt wird und nur die Daten zurück geliefert werden. Mit der Zuweisung $tags= werden die Daten nicht angezeigt, sondern der Variablen $tags zugewiesen. In der letzten Zeile sieht man, dass die Schlagworte um die Namen der angezeigten Personen erweitert wurden.

Fertiges Skript

Wenn man mit diesen Anweisungen Personennamen hinzufügt, die eventuell schon in den Schlagworten enthalten waren, kommt es zu einem Doppeleintrag.

Mit dem ExifTool und mit ExifToolGUI sind diese fehlerhaften Doppeleinträge auch zu sehen. Die Bildbearbeitungsprogramme Adobe Bridge, IrfanView und Google Picasa eliminieren diese doppelten Stichworte und zeigen sie nicht an, löschen sie aber auch nicht.

Damit es nicht zu solchen Mehrfacheintragungen kommt, darf man die Personennamen (und auch andere Stichworte) nicht einfach zu den bestehenden hinzufügen. sondern man muss prüfen, ob sie nicht vielleicht schon in der bereits eingetragenen Liste vorhanden sind.

Schließlich kann es gewünscht sein, dass man die Stichworte überhaupt erst einstellt und das nicht nur für eine Datei sondern für alle Bilder in einem Ordner und das auch rekursiv für alle untergeordneten Ordner.

Schließlich soll man mit den Metadaten experimentieren können, ohne dass gleich eine Bilddatei verändert wird.

Das alles leistet das PowerShell-Programm tags.ps1. Hier ein Blick auf die Entiwcklungsoberfläche von WIndows PowerShell GUI:

Die Ausgaben werden für eine bessere Lesbarkeit farbkodiert.

tags.ps1

tags.ps1 -?

Setzen oder Hinzufügen von Stichworten
 -? -h              Hilfe (dieser Text)
 -D                 Debug
 -P "<Verzeichnis>" Pfad zur Bilddatei (erforderlich, "!)
 -T "<Stichworte>"  Stichworte ("!)
 -O                 Stichworte überschreiben
 -A                 Personen hinzufügen
 -R                 Rekursiv
 -X                 Ausführen
  • tags.ps1 bearbeitet die Stichworte in Bilddateien des Typs .jpg oder .jpeg oder Dokumenten des Typs .pdf. Stichworte können gelöscht, gesetzt oder ergänzt werden. Optional kann man die Namen aus der Gesichtserkennung zu den Stichworten hinzufügen.
  • Der Pfad -P kann auf eine einzelne Datei verweisen oder auf ein Verzeichnis. Die Anführungszeichen beim Pfad sind nötigt, wenn es Leerzeichen im Namen gibt.
  • Die Stichwortliste -T (Beistrich als Trennzeichen) ist optional. Fehlt die Option -T, werden die bestehenden Stichworte nicht verändert. Die Anführungszeichen bei den Stichworten müssen unbedingt angegeben werden.
  • Wenn die Option -O angegeben ist, werden die bestehenden Stichworte gelöscht und durch die aus -T (oder auch -A) ersetzt. Fehlt die Option -O werden die Optionen aus -T (oder auch -A) zu den bestehenden Stichworte hinzugefügt.
  • Die Option -A bewirkt, dass Namen aus der Gesichtserkennung als Stichworte an die Stichwortliste angehängt werden.
  • Die Option -R bewirkt, dass bei Angabe eines Verzeichnisses auch alle darunterliegenden Verzeichnisse nach Bildern durchsucht werden.
  • Solange die Option -X nicht angegeben ist, kann man die Wirkung des Programms an Hand der Ausgaben studieren ohne dass dabei Änderungen an den Bildern vorgenommen werden.

Beispiele

Keines der folgenden Beispiele führt an den Bildern eine Änderung durch. Damit eine Änderung erfolgt, muss man in jeder Kommandozeile noch die Option -x (-Execute) ergänzen.

Anzeige der Hilfe

PS S:\> .\exif_write.ps1 -Help

Arbeiten mit einer Demo-Datei und Kommentieren des Editiervorgangs

Die Option -D (oder -Debug) fügt ein Testbild an die Stelle der Pfadoption ein und bietet Testausgaben, mit denen man die Wirkung des Bearbeitungsvorgangs kontrollieren kann.

Anzeige der Stichworte und Personen

PS S:\> .\exif_write.ps1 -Debug
S:\1976-2-001.jpg
   Pers+:nein Tags ersetzen:nein Ausführen:nein
   Tags       : 1976 Im Burgfried 50 Scheibbs 
   Tags    +/-: 
   Pers       : Johanna Rammel Josef Fiala Martha Fiala Raimund Rammel Silvia Fiala
   Tags    Neu: 1976 Im Burgfried 50 Scheibbs

Hinzufügen weiterer Stichworte

PS S:> .\tags.ps1 -Debug -Tags "123,abc"
 S:\1976-2-001.jpg
   Pers+:nein Tags ersetzen:nein Ausführen:nein
   Tags       : 1976 Im Burgfried 50 Scheibbs 
   Tags    +/-: 123 abc
   Pers       : Johanna Rammel Josef Fiala Martha Fiala Raimund Rammel Silvia Fiala
   Tags    Neu: 123, 1976, abc, Im Burgfried 50, Scheibbs

Ersetzen der bestehenden Stichworte

Achtung, die Stichworte müssen durch Beistriche getrennt sein und die ganze Gruppe muss durch Anführungszeichen begrenzt sein.

PS S:> .\tags.ps1 -Debug -Tags "123,abc" -Overwrite
 S:\1976-2-001.jpg
   Pers+:nein Tags ersetzen:ja Ausführen:nein
   Tags       : 1976 Im Burgfried 50 Scheibbs
   Tags    +/-: 123 abc
   Pers       : Johanna Rammel Josef Fiala Martha Fiala Raimund Rammel Silvia Fiala
   Tags    Neu: 123, abc

Löschen der alten, Hinzufügen neuer Stichworte sowie der Namen der abgebildeten Personen

PS S:> .\tags.ps1 -Debug -Tags "123,abc" -Overwrite -AddPersons
 S:\1976-2-001.jpg
   Pers+:ja Tags ersetzen:ja Ausführen:nein
   Tags       : 1976 Im Burgfried 50 Scheibbs
   Tags    +/-: 123 abc
   Pers       : Johanna Rammel Josef Fiala Martha Fiala Raimund Rammel Silvia Fiala
   Tags    Neu: 123, abc, Johanna Rammel, Josef Fiala, Martha Fiala, Raimund Rammel, Silvia Fiala

Löschen der eingetragenen Stichworte

PS S:> .\tags.ps1 -Debug -Tags "" -Overwrite
S:\1976-2-001.jpg
   Pers+:nein Tags ersetzen:ja Ausführen:nein
   Tags       : 1976 Im Burgfried 50 Scheibbs
   Tags    +/-: 
   Pers       : Johanna Rammel Josef Fiala Martha Fiala Raimund Rammel Silvia Fiala
   Tags    Neu: 

Verzeichnis bearbeiten

Wenn statt dem Pfad einer Bilddatei, ein Pfad zu einem Verzeichnis angegeben wird, bearbeitet das Programm alle Bilder in diesem Verzeichnis.

PS S:> .\tags.ps1 -Path ".\test\" 
 S:\test\1976-2-001.jpg 
 S:\test\1976-2-002.jpg 

Verzeichnis rekursiv bearbeiten

Mit der Option -R (oder -Recursive) werden auch alle Bilder in den Unterverzeichnissen bearbeitet.

PS S:> .\tags.ps1 -Path ".\test\"  -Recursive
 S:\test\test1\test1\1976-2-001.jpg
 S:\test\test1\1976-2-001.jpg
 S:\test\test2\1976-2-001.jpg
 S:\test\1976-2-001.jpg
 S:\test\1976-2-002.jpg

Programmcode

Param(
	[switch][alias("?")][alias("h")]$Help=$false,
	[switch][alias("D")]$Debug=$false,
	[string][alias("P")]$Path = "", 
	[string][alias("T")]$Tags = "",
	[switch][alias("O")]$Overwrite=$false,
	[switch][alias("A")]$AddPersons=$false,
	[switch][alias("R")]$Recursive=$false,
	[switch][alias("X")]$Execute=$false
)

function Help
{
	$Text = ""
	$Text += $nl+"Setzen oder Hinzufügen von Stichworten"
	$Text += $nl+"======================================"
	$Text += $nl+"-? -h               Hilfe"
	$Text += $nl+"-D                  Debug"
	$Text += $nl+"-P `"`"  Pfad zu; erforderlich, `"(!)"
	$Text += $nl+"-T `"`"   Stichworte `"(!)"
	$Text += $nl+"-O                  Stichworte überschreiben"
	$Text += $nl+"-A                  Personen hinzufügen"
	$Text += $nl+"-R                  Rekursiv"
	$Text += $nl+"-X                  Ausführen"
	$Text += $nl
    Write-Host $Text
}

$nl = [Environment]::NewLine
$indent = "  "

#Clear-Host 

#$sysvars = get-variable | select -ExpandProperty name
#$sysvars += 'sysvar'

#Remove-Variable * -ErrorAction SilentlyContinue

function MyWrite {

	param([string]$Text, [string]$Fore, [string]$Back )

	if ($Fore-eq"") { $Fore="White" }
	if ($Back-eq"") { $Back="Black" }
	Write-Host $Text -foregroundcolor $Fore -backgroundcolor $Back -NoNewline
}
function Debug-Print {

	param([string]$Text, [string]$Value)

	MyWrite $Text "White" "Black"
    $Fore = "Red"; $Text = $Value
	switch ($Value)
	{
	"True"
        { $Fore = "Green"; $Text = "ja" }
	"False"
        { $Fore = "Red"; $Text = "nein" }
	default
        { $Fore = "Gray" }
    }
	MyWrite $Text $Fore "Black"
}

if ($Debug) {
    if ($Path -eq "") {
        $Path="s:\onedrive\desktop\1976-2-001.jpg" #(Get-Item -Path ".\").FullName
    }
}
else {
    if ($Path -eq "?") { $Help=true; $Path="-?" }
    if ($Help) { Help; Exit }
    if ($Path -eq "") { WriteLn "-Pfad oder -Debug ist erforderlich" "Red" "DarkBlue"; Help; exit }
    if (-not (Test-Path $Path)) { "Pfad $Path existiert nicht"; exit }
}

$Path = Resolve-Path $Path

function Add-Array {
    
    Param ([System.Collections.ArrayList]$a,
           [System.Collections.ArrayList]$b) 

    $c = New-Object System.Collections.ArrayList
    for ($i=0; $i -lt $a.Count; $i++) {
      $tag = $a[$i]
      if ($c.Contains($tag)) { continue }
      else { $c.Add($tag) > $null }
    }
    for ($i=0; $i -lt $b.Count; $i++) {
      $tag = $b[$i]
      if ($c.Contains($tag)) { continue }
      else { $c.Add($tag) > $null }
    }
    if ($c.Count -gt 1) { $c.Sort() }
    return $c
}

function Get-Array {

    Param ([string]$b)

    $arr = $b.Split(",")
    $a = New-Object System.Collections.ArrayList
    for ($i=0; $i -lt $arr.Length; $i++) {
      $tag = $arr[$i].Trim()
      if ($a.Contains($tag)) { continue }
      else { $a.Add($tag) > $null }
    }
    $a.Sort()
    return [System.Collections.ArrayList]$a
}
function List_Array {

    Param ([System.Collections.ArrayList]$a)

    $s = ""
    for ($i=0; $i -lt $a.Count; $i++) {
        $s += $a[$i] + " "
    }
    return $s.Trim()
}
function Metadata_File {

	param ( [string]$Path)

    if (-not ( $Path.ToLower().EndsWith(".jpg") -or $Path.ToLower().EndsWith(".jpeg") -or $Path.ToLower().EndsWith(".pdf") ) ) { return }

    Debug-Print $nl($Path.Replace("\onedrive\desktop",""))

    if ($Debug) { 
        Debug-Print $nl$indent"Pers+:" $AddPersons
        Debug-Print " Tags-:" $Overwrite 
        Debug-Print " Ausführen:" $Execute 
    }
    $String_Tags_Existing = exiftool -s -s -s -q -q -XMP-dc:Subject "$Path"  
    $List_Tags_Existing = Get-Array $String_Tags_Existing
    if ($Debug) { Debug-Print $nl$indent"Tags exist  : " (List_Array $List_Tags_Existing) }

    $List_Tags_New = Get-Array $Tags
    if ($Debug) { Debug-Print $nl$indent"Tags neu    : " (List_Array $List_Tags_New)}

    $String_Persons = exiftool -s -s -s -q -q -XMP-mwg-rs:RegionName $Path
    $List_Persons = Get-Array $String_Persons
    if ($Debug) { Debug-Print $nl$indent"Personen    : " (List_Array $List_Persons) }

    if ($AddPersons) {
        $List_Tags_New = Add-Array $List_Tags_New $List_Persons
        if ($Debug) { Debug-Print $nl$indent"Tags & Pers : " (List_Array $List_Tags_New) }
    }

    if (-not $Overwrite) {
        $List_Tags_New = Add-Array $List_Tags_New $List_Tags_Existing
    }

    if ($Debug) { Debug-Print $nl$indent"Tags neu    : " (List_Array $List_Tags_New)$nl }

    if ($Execute) { 
        exiftool -q -q -XMP-dc:Subject= $Path 
        for ($i=0; $i -lt $List_Tags_New.Length; $i++) {
            $NewTag = $List_Tags_New[$i].Trim()
            if ($NewTag -eq "") { continue }
            exiftool -q -q -XMP-dc:Subject+="$NewTag" "$Path"
        }
        $Path_original = $Path+"_original"
        Remove-Item -Path $Path_original
    }
}
function Metadata_Directory {

	param ( [string]$Path)

    foreach ($File in Get-ChildItem $Path) # | Where-Object {$_.mode -notlike "d*"})
    {
        if ($File.mode -like "d*") { 
            if ($Recursive) {
                Metadata_Directory $File.FullName 
            }
        }
        else {
            Metadata_File $File.FullName
        }
    }
}

Metadata_Directory $Path

Erstellt: 2021-05-17; Modifiziert: 2021-05-19, 2021-05-20

Beilagen

Franz Fiala

Ehemaliger Präsident Clubcomputer / Herausgeber PCNEWS bei ClubComputer.at
Franz war pensionierter HTL Lehrer (TGM), Präsident von ClubComputer, Herausgeber der Clubzeitung PCNEWS und betreute unser Clubtelefon und Internet Support. Er war leidenschaftlicher Rapid Wien Fan. Er ist leider Anfang Jänner 2024 nach langer schwerer Krankheit verstorben.

Letzte Artikel von Franz Fiala (Alle anzeigen)

Zur Werkzeugleiste springen