NAME
Prty::TimeLapse::Directory - Bildsequenz-Verzeichnis
BASE CLASS
SYNOPSIS
# Klasse laden
use Prty::TimeLapse::Directory;
# Instantiiere Verzeichnis-Objekt
$tdr = Prty::TimeLapse::Directory->new('/my/image/dir');
# Anzahl der enthaltenen Bilder
$n = $tdr->count;
# Niedrigste Bildnummer
$n = $tdr->minNumber;
# Höchste Bildnummer
$n = $tdr->maxNumber;
# alle Bilder (des Verzeichnisses oder aus range.def, wenn definiert)
@images = $tdr->images;
# Bilder eines Nummernbereichs
@images = $tdr->images('113-234');
@images = $tdr->images('290-');
@images = $tdr->images('422');
# Bilder zu einem Bezeichner aus range.def
@images = $tdr->images('autofahrt');
# Alle Bilder des Verzeichnisses
@images = $tdr->images('all');
# Alle Bilder aus range.def (leer, wenn range.def nicht existiert)
@images = $tdr->images('used');
# Alle Bilder des Verzeichnisses, die nicht range.def vorkommen
# (leer, wenn range.def nicht existiert)
@images = $tdr->images('unused');
# Lookup eines Bildes
$img = $tdr->image(422); # liefert undef, wenn nicht existent
DESCRIPTION
Ein Objekt der Klasse repräsentiert ein Verzeichnis, das eine geordnete Liste von Bildern enthält. Die Bilder können einzeln über ihre Bildnummer oder als Bildfolge über die Angabe eines Nummern-Bereichs oder eines Bereichs-Bezeichners (definiert in der Datei range.def) abgefragt werden.
ATTRIBUTES
- dir
-
Pfad des Verzeichnisses.
- imageA
-
Array der Bilddatei-Objekte des Verzeichnisses, nach Bildnummer sortiert.
- imageH
-
Hash der Bilddatei-Objekte, mit Bildnummer als Schlüssel.
- rangeDef
-
Referenz auf das Rangedatei-Objekt. Die Referenz wird beim ersten Zugriff zugewiesen. Existiert die Datei range.def nicht, wird eine Exception geworfen.
METHODS
Konstruktor
new() - Instantiiere Bildverzeichnis-Objekt
Synopsis
$tdr = $class->new($dir);
Description
Instantiiere ein Bildverzeichnis-Objekt aus den Bildern in der Verzeichnisstruktur $dir und liefere eine Referenz auf dieses Objekt zurück. Die Verzeichnisstuktur wird per find() nach Bilddateien durchsucht und kann daher beliebig tief verschachtelt sein.
Arguments
Returns
Referenz auf Bildverzeichnis-Objekt
Akzessoren
dir() - Pfad des Zeitraffer-Verzeichnisses
Synopsis
$path = $tdr->dir;
$path = $tdr->dir($subPath);
Description
Liefere den Pfad des Zeitraffer-Verzeichnisses. Ist Zeichenkette $subPath angegeben, wird diese mit '/' getrennt an den Pfad angefügt.
Objektmethoden
count() - Anzahl aller Bilder
Synopsis
$n = $tdr->count;
Description
Liefere die Anzahl der im Zeitraffer-Verzeichnis enthaltenen Bilder.
Returns
Integer >= 0
minNumber() - Niedrigste Bildnummer
Synopsis
$n = $tdr->minNumber;
Description
Liefere die niedrigste Bildnummer. Die niedrigste Bildnummer ist die Nummer des ersten Bildes. Ist die Liste leer, liefere 0.
Returns
Integer >= 0
maxNumber() - Höchste Bildnummer
Synopsis
$n = $tdr->maxNumber;
Description
Liefere die höchste Bildnummer. Die höchste Bildnummer ist die Nummer des letzten Bildes. Ist die Liste leer, liefere 0.
Returns
Integer >= 0
Bildnummern
numbers() - Bildnummern-Ausdruck zu Bildnummern-Liste
Synopsis
@numbers|$numberA = $tdr->numbers($expr);
Description
Liefere die Liste der Bildnummern zu Bildnummern-Ausdruck $expr.
Returns
Liste von Bildnummern (Integer). Im Skalarkontext eine Referenz auf die Liste.
resolveFunctionExpression() - Wende Funktion an
Synopsis
$str = $tdr->resolveFunctionExpression($name,$args);
Description
Wende Funktion $func auf seine Argumente $args an und liefere die resultierende Zeichenkette (Bildnummern-Aufzählung) zurück.
Returns
Zeichenkette
resolveIdentifier() - Wert eines Clip- oder Range-Bezeichners
Synopsis
$str = $tdr->resolveIdentifier($key);
Description
Liefere den Wert des Bezeichners $key.
Returns
Zeichenkette
resolveRange() - Löse Bildnummern-Bereichsangabe auf
Synopsis
$str = $tdr->resolveRange($n,$m);
Description
Überführe eine Bildnummern-Bereichsangabe ("N-M") in eine Nummern-Aufzählung ("N ... M").
Returns
Aufzählung von Bildnummern als Zeichenkette
Bilddateien
images() - Folge von Bilddatei-Objekten
Synopsis
@images|$imageA = $tdr->images;
@images|$imageA = $tdr->images($expr);
Description
Liefere eine Folge von Bilddatei-Objekten gemäß Bildfolgen-Ausdruck $expr. Ist kein Bildfolgen-Ausdruck angegeben, liefere alle Bilddatei-Objekte. Ist eine Range-Datei definiert, bedeutet "alle", alle genutzten Bilder (= 'used'), ansonsten ausnahmslos alle Bilder des Zeitraffer-Verzeichnisses (= 'all').
Die Methode cached ihre Ergebnisse, so dass jede Bildfolge nur einmal bestimmt wird.
Arguments
Returns
Liste von Bilddatei-Objekten. Im Skalarkontext liefere eine Referenz auf die Liste.
image() - Lookup Bilddatei-Objekt nach Bild-Nummer
Synopsis
$img = $tdr->image($n);
Description
Liefere das Bild-Objekt mit Bild-Nummer $n. Existiert keine Bild-Objekt mit Nummer $n, liefere undef.
Arguments
Returns
Bild-Objekt oder undef
.
Operationen
importImages() - Importiere Bilddateien in Zeitraffer-Verzeichnis
Synopsis
$class->importImages($dir,$srcDir);
Description
Füge die Bilddateien aus Verzeichnisstruktur $srcDir zum Zeitraffer-Verzeichnis $dir hinzu.
Arguments
- $dir
-
Zeitraffer-Verzeichnis, in das importiert wird.
- $srcDir
-
Quell-Verzeichnisstruktur mit den Bildern, die importiert werden.
Options
- -reorganize => $bool (Default: 0)
-
Rufe Methode reorganize()
- -sort => 'name'|'mtime' (Default: 'name')
-
Sortierung der Bilddateien vor dem Import. Entweder nach Name ('name') oder nach letzter Änderung und sekundär Name ('mtime'). Letzeres ist beim Import von GoPro-Bildern wichtig.
- -subDir => $subPath (Default: undef)
-
Importiere die Bilder in das Zeitraffer-Subverzeichnis $subPath. Existiert das Verzeichnis nicht, wird es angelegt.
- -verbose => $bool (Default: 1)
-
Gibt Laufzeitinformation auf STDOUT aus.
Returns
nichts
reorganize() - Reorganisiere Bilddateien
Synopsis
$class->reorganize($dir,@opt);
Description
Reorganisiere die Bilddateien des Zeitraffer-Verzeichnisses, indem sie nach ihrer Bildnummer auf Unterverzeichnisse mit je 500 Bilddateien verteilt werden.
Es wird die Unterverzeichnisstruktur angelegt
000001 (für Bilder mit Bildnummer 1 bis Bildnummer 500)
000501 (Bildnummer 501 bis 1000)
001001 (Bildnummer 1001 bis 1500)
usw.
und die Bilder in ihr Verzeichnis bewegt. Befindet sich eine Bilddatei bereits im richtigen Verzeichnis, wird sie nicht bewegt.
Anschließend werden leere Verzeichnisse gelöscht.
Die Operation kann wiederholt angewendet werden, an einem bereits reorganisierten Verzeichnis wird keine Änderung vorgenommen.
Arguments
Options
Returns
nichts
VERSION
1.112
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2017 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.