Hauptseite

Fugenschnitzer – Überblick für Experten und Entwickler


Was ist Fugenschnitzer?

Fugenschnitzer ist eine Seam-Carving-Programmbibliothek und ein darauf aufbauendes Anwendungsprogramm, geschrieben in C und Python 2008/2009 von David Eckardt und veröffentlicht unter der GNU General Public License (GPL) 3 und der GNU Lesser General Public License (LGPL) 3.
Fugenschnitzer ist ein Source-Forge-Projekt: http://fugenschnitzer.sourceforge.net
Weitere Informationen auf der Hauptseite.

Programmkomponenten

Fugenschnitzer besteht aus folgenden Komponenten:

  1. Fugenschnitzer-Programmbibliothek
  2. Fugenschnitzer-Anwendungsprogramm

Was ist Seam Carving?

Seam Carving ist eine Methode zur Größenänderung von Bildern (Rastergraphiken). Seam Carving wurde im Jahre 2007 vorgestellt von Ariel Shamir und Shai Avidan. Eine ausführliche Erläuterung dieses Verfahrens befindet sich auf http://www.seamcarving.com.

Was zeichnet Fugenschnitzer aus?

Fugenschnitzer ist

Die Fugenschnitzer-Programmbibliothek

Die Fugenschnitzer-Programmbibliothek beinhaltet die eigentliche Implementierung des Seam-Carving-Verfahrens. Ihr Funktionsumfang umfaßt die nötigen Routinen, um die Größe eines geladenen Bildes mittels Seam Carving zu verändern, sowie einige praktische Zusatzfunktionen.
Die Bibliothek ist in reinem C (C99) geschrieben und umfaßt etwa 3000 Zeilen an Quellcode. Der Quellcode enthält bewußt keine maschinen- oder plattformspezifischen Anweisungen oder Annahmen, um die höchstmögliche Portierbarkeit zu erreichen. (Die einzige Ausnahme bildet die Bytereienfolge (Endianness) der Bilddaten.) Weiterhin ist die Programmbibliothek ausschließlich von der C99-Standardbibliothek abhängig.
Die Fugenschnitzer-Programmbibliothek wird als dynamische Laufzeitbibliothek in ein Anwendungsprogramm eingebunden.

Die Fugenschnitzer-Anwendungsprogramme

Es stehen zwei Fugenschnitzer-Anwendungsprogramme zur Verfügung: Eins mit graphischer Benutzeroberfläche (GUI – Graphic User Interface) und ein kommandozeilenbasiertes Programm (CLI – Command Line Interface). Beide stellen eine Benutzeroberfläche zum Steuern der Fugenschnitzer-Bibliotheksfunktionen sowie zum Laden und Speichern eines Bildes dar. Das Kommandozeilenprogramm dient außerdem als Beispiel zum Einbinden und Verwenden der Fugenschnitzer-Bibliothek in ein C-Programm.

GUI-Version

Die graphische (GUI) Version ist in Python 2.6 geschrieben und verwendet das GUI-Toolkit wxPython 2.8.9. Die Einbindung der Fugenschnitzer-Bibliothek erfolgt über das Python-Modul ctypes.

CLI-Version

Die Kommandozeilen-(CLI-)Version ist wie die Fugenschnitzer-Bibliothek in C99 geschrieben und verwendet zum Laden und Speichern von Bildern im PNG-Format die libpng.


Wo gibt es Fugenschnitzer?

Fugenschnitzer ist über diese Links abrufbar:


Kompilieren

Kompilieren der Fugenschnitzer-Programmbibliothek mit GCC

Voraussetzungen

Zum Kompilieren der Fugenschnitzer-Programmbibliothek wird GCC 4 oder höher benötigt.

Quellcode vorbereiten

Als erstes das Quellcodepaket herunterladen und in ein beliebiges Verzeichnis entpacken. Danach das Makefile mit einem Texteditor öffnen und im Parameterabschnitt für die Zielplattform die Kommentarzeichen entfernen. Hinweise dazu im Makefile.

Bibliothek kompilieren

Nach dem Bearbeiten des Makefile
> make
ausführen, um die Bibliothek zu kompilieren.

Kompilieren der Fugenschnitzer-CLI-Anwendungs mit GCC

Voraussetzungen

Auch hierfür wird GCC 4 oder höher benötigt. Hinzu kommen:

Quellcode vorbereiten

Hier gilt dasselbe wie für das Kompilieren der Bibliothek. Zusätzlich muß die Fugenschnitzer-Bibliothek im Quellcodeverzeichnis oder im Suchpfad für externe Bibliotheken abgelegt werden. Die Bibliothek ist eine Binärdatei mit folgendem Namen:

Plattform Dateiname
Windows seamcarv.dll
Darwin/OS X libseamcarv.dylib
Linux libseamcarv.so


Außerdem muß der Include-Header seamcarv.h im Include-Suchpfad oder im Quellcodeverzeichnis abgelegt werden.

Anwendung kompilieren

Auch dies geschieht mit
> make
.