Zur Zeit wird gefiltert nach: automatisierung
Filter zurücksetzen

14.02.2010
 | Autor: Maximilian Kalus | Abgelegt in:  | Kommentare: 0

Heim-Bilderserver mit llgal

Ein einfacher Bilderserver kann mit dem Programm llgal erstellt werden. Das Programm ist ein Nachfolger von igal and kann rekursiv Verzeichnisse durchsuchen und einfache HTML-Bildergalerien erstellen. Wer HTML-Code und Bilder trennen will, muss sich jedoch mit einem Trick behelfen.
[mehr]
02.02.2010
 | Autor: Maximilian Kalus | Abgelegt in:  | Kommentare: 1

Codeschnippsel: PNG-Weltkugel per Generic Mapping Tools in PHP-Skript erzeugen (Linux/Ubuntu)

Wichtig ist, dass der Rechner, auf dem das Skript ausgeführt wird, bestimmte Voraussetzungen mitbringt:

  • GMT muss klarerweise installiert sein. Eine Anleitung gibt es hier im Blog. Windows-Dateien können von der GMT-Homepage heruntergeladen werden. Ob das Skript unten auf Windows funktioniert, weiß ich nicht.
  • Gegebenenfalls müssen die Pfade angepasst werden. Die meisten Distributionen verwenden inzwischen den GMT-Wrapper „GMT”. Falls das nicht der Fall ist, muss die Variable $gmtWrapper gelöscht werden und die Variablen $gmtCoast, $gmtXY und $gmtText mit Pfadnamen versehen werden.

Nachdem man alles eingestellt hat (unter Ubuntu sollte das Skript Out-of-the-Box funktionieren), kann man von es von der Kommandozeile ausprobieren: php $gmt_globe.php. Dazu muss php-cli installiert sein.

Das Ergebnis kann sich durchaus sehen lassen:

Dieser Globus wurde mit Generic Mapping Tools erzeugt

Die Größe der Weltkugel ist im Skript festgesetzt. Durch Ändern der Variable $dpi lässt sich bestimmen, wie groß das resultierende PNG ist.

Quelltext:  Alles auswählen  |  Zeilennummerierung an/aus
  1. <?php
  2. //gmt_globe.php - Code-Schnippsel
  3. //Copyright (c) 1010, Maximilian Kalus, auxnet.de
  4.  
  5. //Ausgabe:
  6. $lon = '11.566667'; //Längengrad
  7. $lat = '48.133333'; //Breitengrad
  8. $name = 'München'; //Name des Ortes
  9. $output = '/tmp/globus'; //Pfad und Namensteil für Ausgabedatei
  10. $is_utf8 = true; //System ist UTF-8?
  11. $dpi = 150; //DPI der Ausgabe: 72 oder 96 ist gut für den Bildschirm, 300 oder 600 für den Druck
  12.  
  13. //Umgebung:
  14. $convert = '/usr/bin/convert'; //Pfad zu ImageMagick convert (oder GraphicsMagick Wrapper)
  15. $gmtWrapper = '/usr/bin/GMT'; //GMT-Wrapper oder leer
  16. $gmtCoast = 'pscoast'; //Name oder Pfad zu pscoast
  17. $gmtXY = 'psxy'; //Name oder Pfad zu psxy
  18. $gmtText = 'pstext'; //Name oder Pfad zu pstext
  19.  
  20. $gmtEnv = array(
  21. ); //ggf. Umgebungsvariablen für GMT (PHP5)
  22.  
  23. //Ausgabe-namen
  24. $tmpname = $output.'.ps'; //Ausgabe in PS-Datei
  25. @unlink($tmpname); //ggf. alte Dateien löschen
  26.  
  27. //GMT-Generierung starten
  28. //Prozess-Pipes erzeugen
  29. $pipes = null;
  30. $descriptorspec = array(
  31.    0 => array("pipe", "r"),  // STDIN ist eine Pipe, von der das Child liest
  32.    1 => array('file', $tmpname, "a"),  // STDOUT ist eine Datei, in die das Child schreibt
  33.    2 => array("file", $output."_error.txt", "a") // STDERR ist eine Datei,
  34.                                                     // in die geschrieben wird
  35. );
  36.  
  37. //Globus selbst erstellen
  38. //PHP-Versionen unterscheiden sich...
  39. if (phpversion() < 5) $process = proc_open($gmtWrapper.' '.$gmtCoast.' -Rg -JG'.$lon.'/'.$lat.'/16c -B15g15 -Dc -A5000 -W0.3pt -G230 -P -K', $descriptorspec, $pipes);
  40. else $process = proc_open($gmtWrapper.' '.$gmtCoast.' -Rg -JG'.$lon.'/'.$lat.'/16c -B15g15 -Dc -A5000 -W0.3pt -G230 -P -K', $descriptorspec, $pipes, $cwd, $env);
  41.  
  42. if (is_resource($process)) { //keine weiteren Daten übergeben
  43.     $return_value = proc_close($process); //Prozess schließen
  44. }
  45.  
  46. //Punkt eintragen
  47. if (phpversion() < 5) $process = proc_open($gmtWrapper.' '.$gmtXY.' -Rg -JG'.$lon.'/'.$lat.'/16c -Ss0.15 -G255/0/0 -O -K', $descriptorspec, $pipes);
  48. else $process = proc_open($gmtWrapper.' '.$gmtXY.' -Rg -JG'.$lon.'/'.$lat.'/16c -Ss0.15 -G255/0/0 -O -K', $descriptorspec, $pipes, $cwd, $env);
  49.  
  50. if (is_resource($process)) { //Daten übergeben: Längen und Breitengrad
  51.     fwrite($pipes[0], $lon.' '.$lat);
  52.     fclose($pipes[0]);
  53.  
  54.     $return_value = proc_close($process); //Prozess schließen
  55. }
  56.  
  57. //Titel eintragen
  58. if (phpversion() < 5) $process = proc_open($gmtWrapper.' '.$gmtText.' -Rg -JG'.$lon.'/'.$lat.'/16c -G0/0/0 -Dj0.06/0.06 -O', $descriptorspec, $pipes);
  59. else $process = proc_open($gmtWrapper.' '.$gmtText.' -Rg -JG'.$lon.'/'.$lat.'/16c -G0/0/0 -Dj0.06/0.06 -O', $descriptorspec, $pipes, $cwd, $env);
  60.  
  61. if (is_resource($process)) { //Daten übergeben: Länge, Breite, Größe, Name...
  62.     if ($is_utf8 && function_exists('mb_convert_encoding'))
  63.     $name = mb_convert_encoding($name, 'ISO-8859-1', 'UTF-8');
  64.     fwrite($pipes[0], $lon.' '.$lat.' 10 0 0 1 '.$name);
  65.     fclose($pipes[0]);
  66.  
  67.     $return_value = proc_close($process); //Prozess schließen
  68. }
  69. //GMT ist abgeschlossen
  70.  
  71. //PNG erzeugen
  72. exec($gmtWrapper.' ps2raster -E'.$dpi.' -A -P -Tg "'.$tmpname.'"');
  73.  
  74. //PS-Datei löschen
  75. unlink($tmpname);
  76. ?>
Die Generic Mapping Tools (GMT) sind ein mächtiges Werkzeug zur Erstellung von Kartenmaterial. Mit etwas Aufwand kann man GMT auch in ein PHP-Skript einbauen und somit Karten von einem Server z.B. für eine Website erzeugen lassen. Folgendes Codeschnippsel zeigt, wie's geht.
[mehr]
04.09.2009
 | Autor: Maximilian Kalus | Abgelegt in:  | Kommentare: 11

Webcam als Bewegungsmelder unter Ubuntu/Linux einsetzen

Bewegungsmelder sind relativ einfache Systeme, Schnittstellen für Computer sind jedoch relativ selten und teuer oder erfordern elektronische Ausrüstung. Mit einer einfachen Webcam geht es auch unter Linux.
[mehr]
11.05.2009
 | Autor: Maximilian Kalus | Abgelegt in:  | Kommentare: 5

Automatisches Skript für Cuneiform und hocr2pdf

In meinem letzten Artikel ging es um Cuneiform, hocr2pdf und das Erstellen von “Sandwich-PDFs” unter Linux. Heute will ich ein Skript vorstellen, mit dem man die Erstellung automatisieren kann.
[mehr]
02.04.2009
 | Autor: Maximilian Kalus | Abgelegt in:  | Kommentare: 59

Cuneiform und hocr2pdf unter Ubuntu/Linux installieren und einsetzen

Im Linux-Magazin 03/2009 war ein guter Artikel zum Thema OCR unter Linux mit Hilfe von cuneiform, tesseract und anderen Programmen. Allerdings fehlte ein einfacher Einstieg zum Thema, den ich hier kurz für Ubuntu beschreiben will.
[mehr]