• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Foto Panorama

Lange ist es her das ich mich gemeldet habe und vieles hat sich geändert. Wir verarbeiten die Fotos nun nicht mehr mit einem Flachbrett scanner sondern mit einem Einzugsscanner. Ich selber habe schon viele Scripte geschrieben die ein Wasserzeichen setzen oder die Bilder auf 800xXXX verkleinern aber mir fällt einfach nicht ein wie ich sie wieder übereinander bekomme :-(

Die neuen Dateien heißen nun:
1234567890~0001.jpg Vorderseite
1234567890~0002.jpg Rückseite
1234567891~0001.jpg Vorderseite
1234567891~0002.jpg Rückseite
1234567892~0001.jpg Vorderseite
1234567892~0002.jpg Rückseite

Wie kann ich einem Script sagen das er Vorder und Rückseite zu einem Bild zusammensetzt dies in eine neue Datei und an einen neuen Ort packt und dann den Dateinamen nimmt ohne ~000X (also nur noch die ersten 10 Stellen des Dateinamens plus die Endung?
 
Hi,

Uups, hab eben erst gemerkt, wie alt der Thread ist.

Also, ich hatte noch ein paar Ideen zu dem getopt-Problem (vom letzten Sommer):

1. Bei mir (OpenSuSE 10.0) sagt "man getopt" dazu:

Traditional implementations of getopt(1) are unable to cope with whitespace and other (shell-specific) special characters in arguments and non-option parameters. To solve this problem, this implementation can generate quoted output which must once again be interpreted by the shell (usually by using the eval command). This has the effect of preserving those characters, but you must call getopt in a way that is no longer compatible with other versions (the second or third format in the SYNOPSIS). To determine whether this enhanced version of getopt(1) is installed, a special test option (-T) can be used.

2. bash und getopts (mit s am Ende) verwenden.
3. Die Emulation von Example 9-13 hier

http://tldp.org/LDP/abs/html/string-manipulation.html

verwenden oder anpassen.
4. Irgendwie die ganze Zeile auf einmal einlesen und mit awk auseinandernehmen.

Viele Grüße
 
High!

@b3ll3roph0n:
verneig...... :wink: das Skript zeigt mir wieder deutlichst auf, wo ich noch gewaltige Wissenslücken habe. Ich habe zum Thema Skripting schon einiges gelesen, aber bei manchen Konstrukten verstehe ich nur Bahnhof. Hast Du mir einen Tip für ein HOWTO mit viiieeellllenn Beispielen (Learning by doing), damit ich eines Tages auch sowas basteln kann?

Thanks!

Nukem36
 
@chrisibook
Sehe ich das richtig, dass sich im Prinzip nur die Dateinamen geändert haben?
Also statt
Code:
YYYY-MM-DD-NNN
und
Code:
YYYY-MM-DD-NNNR
jetzt
Code:
NUMMER~0001
und
Code:
NUMMER~0002

Dann sollte das Script eigentlich mit relativ geringem Aufwand angepasst werden können (zumindest die Ansätze für andere Dateinamen gibt es bereits in dem Script :wink: ):
Die Variable
Code:
FORM="YYYY-MM-DD-NNN";
sollte entsprechend angepasst werden.
Ausgewertet wird diese dann in der Zeile:
Code:
IMG_A=$(for i in `echo "$IMG_F"`; do echo "$(basename "$i" .jpg | cut -c -"${#FORM}")"; done | sort -u);
(ziemlich unelegant - aber den Ausdruck via Regex auszuwerten ... dazu war ich zu Faul :oops: )
Der neue Dateiname wird dann hier
Code:
for i in `echo "$IMG_A"`; do c="0"; new_name="$OUT/$(basename $i .jpg).jpg";tmp_name="$OUT/$(basename $i .jpg)_tmp.jpg";
festgelegt.

Die Sortierungsfunktionen sollten trotz des neuen Dateinamenformats erhalten bleiben => einfach mal testen (natürlich nur mit Kopien).


@Nukem36
Danke! :D
Lektüre war:
/bin/bash - Treffpunkt für Linux-Shelluser
Einfuehrung in die Shell-Programmierung
und vor allem: http://www.tldp.org/LDP/abs/html/
außerdem man bash
 
Sorry aber mein Account war irgendwie weg daher jetzt neuer Benutzername :(

Ähm wie muss ich denn die erste Form anpassen damit das klappt?

Nein wir haben nicht nur unsere Dateinamen geändert sondern auch noch das ja früher alle Bilder übereinander erstellt wurden. Jetzt ist es ja nur noch so das nur die Vorder und die Rückseite zu einem Bild verschmolzen werden und das Wasserzeichen drauf kommt.
also
0000000023~0001.jpg
0000000023~0002.jpg
0000000023~0003.jpg
0000000023~0004.jpg

da kommt dann nicht wie früher ein Bild raus sonder 2 und zwar

0000000023a01.jpg
0000000023a02.jpg

(Das a wird als Trenner benutzt)

Im übrigen habe ich es inzwischen auch schon alleine geschafft so was zu schreiben nur leider ist es nicht so schnell wie dein alter script. Ich musste drei Scripte schreiben und einen der alles in einzelne Ordner kopiert damit es kein durcheinander gibt.

Außerdem hat er sehr viele Fehler weil ich keine If schleifen schreiben kann daher führt er alles aus auch wenn es das Foto gar nicht gibt. Ich werde sie aber Morgen mal posten.

Nehmt aber Rücksicht auf mich ich bin Anfänger :)
 
Oben