Freitag, 8. Oktober 2010

Converting a set of PS files to an animated GIF with ImageMagick

Say you have a series of plots called plot1.ps, plot2.ps, ...
plot99.ps in a directory and you would like to convert them into a
single animated GIF file in this order, because you really can't
figure how to understand what's going on in them otherwise. Let's
rename them first so they'll be properly ordered:
for (( i=1; i<=9; i++ )); do mv plot$i.ps plot0$i.ps; done
and then let convert turn them into an animated GIF with 1s per frame
in one go. The -alpha off command removes any transparency.
convert -delay 100 -loop 0 plot*.ps -alpha off plot_animated.gif

Dienstag, 5. Oktober 2010

Extract Image from Binary FITS table's cell

The FITS image format is as multi-functional as it is inaccessible. I recently stumbled across FITS files which had a binary table extension with pictures in some individual cells (instead of their own image
extensions). It took me a while to realize that these really weren't 2D objects but only vectors with an extra header entry telling us their true dimensionality and the size of their axes. To get the vectors, e.g. with
CCfits, you can do a simple
#include
using namespace std;

#include
using namespace CCfits;

int main()
{

auto_ptr pInfile(new FITS("in.fit",Read,1,true)); // opens&reads second hdu read-only

ExtHDU& inTable = pInfile->extension(1);

Column& inColumn = inTable.column("imagecolumn",false);

vector< valarray > image;
inColumn.readArrays(image, 1, 1); // read only one row this time
...
image[0] is now a vector of the image stored in the first line; you could access it as image[0][i] or rearrange the values in a two-dimensional array if you wish.

Dienstag, 27. Juli 2010

MySQL - Arbeitsspeicher sparen

Haben Sie auf Ihrem virtuellen Server knappe 100 MB RAM übrig? Falls ja freue ich mich über Post, anderenfalls könnte folgender Trick Ihnen vielleicht auch helfen.

Der mysql-Server lädt standardmäßig die Unterstützung des alternativen (und sicher grundsätzlich guten) Tabellenformats InnoDB. Dummerweise gehen fast 100 MB Arbeitsspeicher für die dafür zuständigen
Programmteile drauf, was ich etwas übertrieben finde.

Um zu prüfen, ob Sie überhaupt Tabellen im InnoDB-Format besitzen, führen Sie einfach folgendes SQL-Kommando aus:
SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' engine=MyISAM;') FROM information_schema.tables WHERE engine = 'InnoDB';
Das erzeugt gleichzeitig das SQL-Kommando zum Umformatieren der betreffenden Tabellen von InnoDB auf das klassische MyISAM-Format. Diese sehen z.B. für eine Tabelle attachments der Datenbank
redmine so aus:
ALTER TABLE redmine.attachments engine=MyISAM;
Sicherstellen sollten Sie natürlich, dass Ihre Anwendung auch mit MyISAM statt InnoDB reibungslos läuft! Wenn Sie alle Tabellen auf MyISAM umgestellt haben können Sie in Ihrer /etc/mysql/my.cnf
bedenkenlos die folgende Zeile aktivieren (d.h. das # am Anfang der Zeile entfernen):
skip_innodb
Nach dem Neustart von mysql mit
/etc/init.d/mysql restart
sollte deutlich weniger Arbeitsspeicher verwendet werden!

Siehe auch hier.

Samstag, 3. Juli 2010

Verzeichnisse mit verschiedenen Version Control - Systemen gleichzeitig updaten

Falls Sie wie ich eine Menge mit Version Control - Systemen verwaltete Verzeichnisse in einem einzigen Überverzeichnis haben, kann ich das folgende Skript empfehlen. Es begibt sich in jedes Unterverzeichnis des
aktuellen Verzeichnisses und holt dort jeweils die neue Version des Repositories ab. Es funktioniert mit Mischungen von git und svn - Repositories!
#!/bin/sh

for i in `ls`
do
        if [ -d $i ]
        then
        echo "############ $i ############"
        cd $i
        if [ -d .git ]
        then
                git $1
        else if [ -d .svn ]
        then
                svn up
        else
                echo Not a valid repository!
        fi
        fi
        cd ..
        fi
done

Sonntag, 27. Juni 2010

Der kantige Bruder von \left(

Sperrige Formeln in LaTeX werden schonmal gerne von den automatisch vergrößerten Klammern \left( und \right) eingebunden. Netterweise geht das ganz genauso mit ihren kantigen und kurvigen Geschwistern
\langle und \lbrace, nämlich so:
\left( \left\langle \left\lbrace \frac{1.5\pi}{\pi/2} \right\rbrace \right\rangle \right) = 3
Das gibt große eckige und geschweifte Klammern!

Dienstag, 22. Juni 2010

SVG verlustfrei vergrößert Rendern

Gerade auf Wikipedia und auch sonst findet man glücklicherweise immer häufiger Vektorgrafiken, die
man verlustfrei beliebig skaliert in normale gepixelte Grafikdateien umwandeln kann.

Unser Freund und Helfer ist wieder convert von ImageMagick, mit dem Befehl
convert -density 300 in.svg out.png
Der Parameter von Density vergrößert die Ausgabedatei linear in Länge und Breite.

Bild invertieren mit convert

Das ImageMagick-Programm convert ist ein echtes Schweizer Taschenmesser der Bildverarbeitung. Die Farben eines Bildes invertieren kann man beispielsweise
problemlos mit
convert -negate white.png black.png
Nur schade, dass das in der manpage von convert nicht unter dem Wort "invert" zu finden ist ...

Sonntag, 20. Juni 2010

PDF-Dateien aneinanderfügen

PDF-Dateien aneinanderfügen kann man mit dem Linux-Tool pdftk (PDF Tool Kit)
folgendermaßen:
pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf
So einfach ist das.

Bilder in hinreichend kleine PDF-Dateien umwandeln

Will man JPG-Bilder in PDFs umwandeln empfiehlt sich dazu z.B. das Linux-Tool
convert aus dem Paket ImageMagick.
convert in.jpg out.pdf
Die Ausgabedatei out.pdf ist jedoch oft unangenehm groß. Mit dem
Parameter -quality lässt sich JPG-Komprimierung anwenden, etwa so:
convert -quality 10 in.jpg out.pdf
Das erzeugt deutlich kleinere Ausgabedateien, oft ohne großen
Qualitätsverlust. Je kleiner der Wert hinter "-quality", desto kleiner die
Ausgabedatei.

Donnerstag, 8. Mai 2008

Video-Index reparieren mit mencoder

Bei manchen falsch codierten Videodateien, z.B. von onlinetvrecorder.com, funktioniert beim Abspielen mit mplayer kein Spulen. Dieser beschwert sich stattdessen etwa folgendermaßen:
Cannot seek in raw AVI streams.
Eine einfache Methode, die Videodateien zu reparieren ist die folgende. Dazu benötigt man mencoder, der üblicherweise mit mplayer mitinstalliert wurde:
mencoder -idx input.avi -ovc copy -oac copy -o output.avi
Dies kopiert die Audio- und Videodaten und erstellt zusätzlich einen Index, mit dem Scrollen möglich sein sollte.

User Status

Du bist nicht angemeldet.

Aktuelle Beiträge

iPhone to linux
gphoto2 --port=usb -R -P copies all images from an...
danielgruen - 2. Feb, 19:46
Alternative
This screws up the bounding box of non-square plots....
danielgruen - 30. Dez, 23:22
MNRAS submission problems...
Matplotlib ps files like to contain Type 3 fonts, which...
danielgruen - 13. Apr, 19:45
PPPOE connection problems
I was facing connection problems after some technical...
danielgruen - 29. Jun, 01:51
Sort products randomly...
http://www.magentocommerce .com/boards/v/viewthread/2 32826/#t331309 nicely...
danielgruen - 1. Feb, 17:29

Links

Suche

 

Status

Online seit 5929 Tagen
Zuletzt aktualisiert: 2. Feb, 19:46

Credits


Multimedia
Profil
Abmelden
Weblog abonnieren