The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::ImageMagick - Konstruiere eine ImageMagick-Kommandozeile

BASE CLASS

Quiq::Hash

DESCRIPTION

ImageMagick Online-Dokumentation: http://www.imagemagick.org/Usage/

Ein Objekt der Klasse repräsentiert eine ImageMagick-Kommandozeile. Die Klasse verfügt einerseits über elementare (Objekt-)Methoden, um eine solche Kommandozeile sukzessive aus ihren elementaren Bestandteilen konstruieren zu können und höhere (Klassen-)Methoden, die eine bestimmte Funktion durch das Hinzufügen einer Reihe von Optionen realisieren.

METHODS

Konstruktor

new() - Konstruktor

Synopsis

  $cmd = $class->new;

Description

Instantiiere ein ImageMagick-Kommandozeilen-Objekt und liefere eine Referenz auf dieses Objekt zurück.

Kommando konstruieren

addElement() - Füge ein Kommandozeilen-Element hinzu

Synopsis

  $cmd->addElement($str);

Description

Ergänze die Kommandozeile um Kommandozeilen-Element $str. Ein Kommandozeilen-Element ist ein durch Whiltespace getrennter elementarer Teil der Kommandozeile, wie z.B. das Kommando, eine Option, ein Optionsargument, ein Dateiname usw.

Enthält $str Whitespace oder andere, spezielle Zeichen, wird $str in einfache Anführungsstriche eingefasst.

Examples

Ohne Whitespace:

  $cmd->addElement('input.jpg');
  =>
  input.gif

Mit Whitespace:

  $cmd->addElement('Sonne am Abend.jpg');
  =>
  'Sonne am Abend.jpg'

addCommand() - Füge Kommando hinzu

Synopsis

  $cmd->addCommand($command);

Description

Ergänze die Kommandozeile am Anfang um das Kommando $command. Die Methode liefert keinen Wert zurück.

Examples

Kommando convert:

  $cmd->addCommand('convert');
  =>
  convert

addOption() - Füge Option hinzu

Synopsis

  $cmd->addOption($opt);
  $cmd->addOption($opt=>$val);

Description

Ergänze die Kommandozeile um die Option $opt und (optional) den Wert $val. Die Methode liefert keinen Wert zurück.

Examples

Option ohne Wert:

  $cmd->addOption('-negate');
  =>
  -negate

Option mit Wert:

  $cmd->addOption(-rotate=>90);
  =>
  -rotate 90

Kommando

command() - Kommandozeile als Zeichenkette

Synopsis

  $str = $cmd->command;

Description

Liefere das Kommando als Zeichenkette.

Kommando-Ausführung

execute() - Führe ImageMagick-Kommandozeile aus

Synopsis

  $cmd->execute;

Description

Führe ImageMagick-Kommando $cmd aus. Im Fehlerfall wird eine Exception geworfen.

Klassenmethoden (vollständige Kommandozeilen)

resizeFill() - Generiere Kommando für Operation resizeFill

Synopsis

  $cmd = $class->resizeFill($input,$output,$size,$background);

Arguments

$input

Image-Objekt oder Bilddatei-Pfad des Input-Bildes.

$output

Bilddatei-Pfad des Output-Bildes. Das Verzeichnis wird erzeugt

$size

Größe des generierten Output-Bildes.

$background

Farbe des Hintergrunds, wenn das Bild den Bereich $size nicht vollständig ausfüllt.

Description

Generiere ein convert-Kommando, dass das Input-Bild auf Größe $size bringt.

  • Ist das Bild in mindestens einer Dimension größer als $size, wird es verkleinert.

  • Andernfalls wird das Bild in seiner Größe nicht verändert.

  • Vom Bild nicht abgedeckte Bereiche werden in Hintergrundfarbe $background dargestellt.

resizeStretch() - Generiere Kommando für Operation resizeStretch

Synopsis

  $cmd = $class->resizeStretch($input,$output,$size);

Arguments

$input

Image-Objekt oder Bilddatei-Pfad des Input-Bildes.

$output

Bilddatei-Pfad des Output-Bildes. Das Verzeichnis wird erzeugt

$size

Größe des generierten Output-Bildes.

Description

Generiere ein convert-Kommando, dass das Input-Bild auf Größe $size bringt.

  • Weicht das Seitenverhltmis ab, wird das Bild verzerrt.

negate() - Generiere Kommando für Operation negate

Synopsis

  $cmd = $class->negate($input,$output);

Arguments

$input

Image-Objekt oder Bilddatei-Pfad des Input-Bildes.

$output

Bilddatei-Pfad des Output-Bildes. Das Verzeichnis wird erzeugt

Description

Generiere ein convert-Kommando, dass das Input-Bild negiert.

morph() - Generiere Kommando für Operation morph

Synopsis

  $cmd = $class->morph($input1,$input2,$outPattern,$n);

Arguments

$input1

Pfad oder Bilddatei-Objekt des ersten Bildes.

$input2

Pfad oder Bilddatei-Objekt des zweiten Bildes.

$outPattern

Pfad-Muster für die erzeugte Bildfolge. Z.B. "$dir/%02d"

$n

Anzahl der erzeugten Zwischenbilder.

Description

Generiere ein convert-Kommando, das $n Zwischenbilder für die Bilder $input1 und $input2 erzeugt. Unter dem Pfad-Muster $outPattern werden $n+2 Bilder gespeichert: Die $n gemorphten Bilder plus die beiden Ausgangsbilder.

Wird als $input1 oder $input2 ein Objekt angegeben, muss dieses eine Methode path() besitzen, die den Pfad zur Bilddatei liefert, wie die Objekte der Klasse Quiq::File::Image.

Beim convert-Kommando kann man bei der Morph-Operation zwar auch mehrere Bilddateien angeben, aber dann wird extrem viel Speicher benötigt. Besser ist es, die Bilder paarweise zu morphen und das letzte Bild

Example

Erzeuge einen convert-Aufruf für 5 Zwischenbilder (hier an der Kommandozeile):

  $ perl -MQuiq::ImageMagick -E 'say Quiq::ImageMagick->morph("1.jpg","2.jpg","tmp/%02d.jpg",5)->command'

Erzeugtes Kommando:

  convert 1.jpg 2.jpg -morph 5 tmp/%02d.jpg

Wird das Kommando ausgeführt, entstehen in Unterverzeichnis tmp (das vorab existieren muss) sechs Bilder:

  00.jpg entspricht 1.jpg (die Bilder sind nicht identisch!)
  01.jpg
  02.jpg
  03.jpg
  04.jpg
  05.jpg
  06.jpg entspricht 2.jpg (die Bilder sind nicht identisch!)

VERSION

1.188

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2020 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.