Bilder-Slideshow unter DOS erstellen, und abspielen

Konfiguration, Anwendungen, Treiber und TSRs unter DOS
Antworten
frank9652
Norton Commander
Beiträge: 142
Registriert: Di 27. Mär 2007, 13:03
Wohnort: Göppingen

Bilder-Slideshow unter DOS erstellen, und abspielen

Beitrag von frank9652 »

Hallo Leute!
Mit der tatkräftigen Unterstützung von Dosferatu habe ich es nun geschafft eine Slideshow unter DOS zu erstellen, und ablaufen zu lassen.

Situation:
Ich wollte im Urlaub die Bilder, die ich tagsüber mit der Digicam gemacht habe, auf dem Toshiba Libretto CT110 als Slideshow unter DOS ablaufen lassen. Der betagte Netbook hat ein 7,1" Display.

Folgende 4 Programme werden dazu benötigt:

Der DOS-Bildbetrachter PictureView von W.Wiedmann
http://w-wiedmann.homepage.t-online.de/homepage.htm

Ein Programm um DPMI-Speicher zur verfügung zu stellen (CWSDPMI)
http://www.delorie.com/djgpp/dl/ofc/sim ... pmi5b.zip/

Ein Programm das verlustfrei Hochformatbilder unter DOS nach rechts und links drehen kann (JPEGTRAN)
ftp://ftp.simtel.net/pub/simtelnet/msdo ... eg6b32.zip

Und NUMLIST von Dosferatu um eine Batch-Datei für JPEGTRAN zu erstellen.
http://www.imperial-games.de/html/dosa2.htm

Weiterhin werden 3 Batchdateien mit den Namen P1.BAT bis P3.bBAT benötigt die ich wie folgt vorstellen werde.

Vorarbeiten:
Obige 4 Programme aus dem Internet holen, und installieren.

PICTUREVIEW habe ich im Verzeichnis C:\DOSTOOLS\PV installiert.
CWSDPMI habe ich im Verzeichnis C:\DOSTOOLS\DPMI installiert.
JPEGTRAN habe ich im Verzeichnis C:\DOSTOOLS\JPEG installiert.
NUMLIST habe ich im Verzeichnis C:\DOSTOOLS\NUMLIST installiert.

Start des Rechners:
Die SD-Speicherkarte der Digicam wird über einen PCMCIA-Adapter in den oberen PCMCIA-Slot gesteckt.
Der Rechner wird mit MS-DOS Startmenü gestartet, und die DOS-Treiber für den PCMCIA-Zugriff werden geladen.
Dem Schacht mit der SD-Karte wird immer der Laufwerksbuchstabe E: zugeordnet, da ich die SD-Karte immer in ein- und denselben PCMCIA-Schacht stecke.

Ich wechsle in das Verzeichnis C:\DOSTOOLS\BATCH in dem sich (unter anderem) die 3 Batchdateien P1.BAT bis P3.BAT befinden.

Während die 3 Batches ablaufen, werden noch 3 Hilfsdateien automatisch angelegt, die später dann wieder gelöscht werden.

Die drei Dateien werden zwischenzeitlich in folgenden Verzeichnissen angelegt:
C:\DOSTOOLS\BATCH\NUM1.BAT
C:\DOSTOOLS\BATCH\NUM2.BAT
C:\DOSTOOLS\PV\BATCH2.TXT

Nun die Beschreibung der 3 verschiedenen Batches:
Den Inhalt der Batches steht zwischen den gestrichelten Linien, gefolgt von einer Erklärung die nicht in der Batch steht.

Inhalt von P1.BAT

Code: Alles auswählen

@echo off 
cls 
md c:\bilder1 
md c:\bilder2 
md c:\bilder3 
:: Erstellt die Verzeichnisse Bilder1 bis Bilder3 

echo Alle Bilder werden von E:\DCIM\100KM029 nach C:\BILDER3 kopiert 
copy e:\dcim\100km029\*.jpg c:\bilder3 >NUL 

echo. 
echo Alle Bilder wurden kopiert! 
echo Rufen Sie nun Geos auf. 
echo Sortieren Sie die Rechtsdreh-Bilder nach C:\BILDER1 
echo Sortieren Sie die Linksdreh-Bilder nach C:\BILDER2 
echo. 
echo ACHTUNG! Bevor Sie P2.BAT starten, tragen sie die Nummern des 
echo ersten Bildes und des letzten Bildes in die P2.BAT ein.


Erklärung:
Nachdem P1.BAT ausgeführt wurde, starte ich die graphische Benutzeroberfläche GEOS mit dem Bildbetrachter GONZO.
Mit ihm kann ich die Bilder sehr schnell als Thumbnail-Bild anschauen. Ich notiere mir die Bilder, die rechts herum gedreht werden sollen auf einem Blatt Papier, und die Bilder die links herum gedreht werden sollen auch.

Anschließend VERSCHIEBE ich die Bilder die rechts herum gedreht werden sollen in das Verzeichnis C:\BILDER1 und die Bilder die links herum gedreht werden sollen in das Verzeichnis C:\BILDER2.

Anschließend beende ich wieder Geos.
(Anstelle Geos kann man natürlich auch ein anderes Programm nehmen.)
Nun editiere ich die Datei P2.BAT

Inhalt von P2.BAT

Code: Alles auswählen

@echo off 
cls 
echo Die Batches zum drehen der Bilder werden erstellt 
echo. 
c:\dostools\numlist\numlist.exe num1.bat *1508-1574 c:\dostools\jpeg\jpegtran.exe -rotate 90 c:\bilder1\pict****.jpg c:\bilder3\pict****.jpg

c:\dostools\numlist\numlist.exe num2.bat *1597-1598 c:\dostools\jpeg\jpegtran.exe -rotate 270 c:\bilder2\pict****.jpg c:\bilder3\pict****.jpg

echo. 
echo Der DPMI Speichermanager wird geladen 
C:\dostools\dpmi\cwsdpmi.exe -p 
echo. 

echo. 
echo Die Bilder mit Rechtsdrehung werden gedreht 
call c:\dostools\batch\num1.bat 
echo. 

echo. 
echo Die Bilder mit Linksdrehung werden gedreht 
call c:\dostools\batch\num2.bat 
echo. 

echo Der DPMI Speichermanager wird entfernt 
c:\dostools\dpmi\cwsdpmi.exe -u 

:: Die Hilfsdateien NUM1.BAT und NUM2.BAT werden gelöscht 
del c:\dostools\batch\num*.bat 

:: Löscht eine evtl. vorhandene Datei Batch2.txt 
del c:\dostools\pv\batch2.txt 

:: Erstellt eine neue Hilfsdatei Batch2.txt von Verzeichnis C:\BILDER3 mit den aktuellen Bildernamen. 
dir c:\bilder3 /b /o >c:\dostools\pv\Batch2.txt 

:: Kopiert die Dateien Batch1.txt, Batch2.txt und Batch3.txt zu einer Datei 
:: mit Namen Batch.sld im Verzeichnis C:\BILDER3 zusammen. 
cd c:\dostools\pv 
copy Batch1.txt+Batch2.txt+Batch3.txt c:\bilder3\batch.sld >NUL 

:: Ruft den Bildbetrachter Pictureview auf. 
c:\dostools\pv\pv.exe 

Erklärung:
Die Batch P2.bat muß editiert werden, und die Bildernummern angepaßt werden, bevor P2.BAT ausgeführt werden kann.

Meine Bilder heißen z.B.
PICT1508.JPG
PICT1509.JPG
PICT1510.JPG usw.

In der 5. Zeile muß der Bereich *1508-1575 durch die Zahlen des ersten Bildes und des letzten Bildes im Verzeichnis C:\BILDER1 ersetzt werden.

In der 6. zeile muß der Bereich *1597-1598 durch die Zahlen des ersten Bildes und des letzten Bildes im Verzeichnis C:\BILDER2 ersetzt werden.

Hat man keine Bilder z.B. im Verzeichnis C:\BILDER2 dann macht das nichts, weil sie dann bei der Bearbeitung übersprungen werden.

Ist die Editierung beendet, kann man P2.BAT starten.
Nun muß man in dem Bildbetrachter in das Verzeichnis C:\BILDER3 wechseln, und die Slideshow starten, indem man die Datei Batch.sld auswählt, und die Enter-Taste drückt.



Inhalt von BATCH1.TXT

Code: Alles auswählen

G:$128 
D:10000 

Erklärung:
Stellt den Grafikmodus für den Libretto auf 800x480 ein.
Dabei werden aber ca. 1-2 cm des unteren Randes des Querformatbilder bei der Anzeige abgeschnitten und ca. 1/3 der Hochformatbilder des unteren Randes.

Man kann auch mit G:$112 den Grafikmodus 640x480 einstellen.
Das hat aber den Nachteil, daß die Querformatbilder nicht das volle Display des Librettos ausfüllen und somit am rechten- und linken Rand ein schwarzer Streifen bleibt.

Der Vorteil hierbei ist aber, daß die Bilder (Hochformat wie auch Querformat) vollständig auf dem Display angezeigt werden.

D:10000 bewirkt, daß jedes Bild ca. 10 Sekunden stehen bleibt, bevor das nächste Bild geladen wird. Da das Laden des nächsten Bildes aber auch ca. 10 Sekunden benötigt sind es am Ende dann effektiv 20 Sekunden, die das Bild auf dem Display stehen bleibt.

Inhalt von BATCH3.TXT

Erklärung:
Q:0 bewirkt, daß die Slideshow nach einem Durchlauf beendet wird.
Ist die Slideshow beendet, kann anschließend P4.BAT ausgeführt werden.

Inhalt von P3.BAT

Code: Alles auswählen

@echo off 
cls 
echo Die Verzeichnisse BILDER1 bis BILDER3 werden gelöscht 
echo. 
deltree c:\bilder1 
deltree c:\bilder2 
deltree c:\bilder3 
echo. 
echo Die Verzeichnisse BILDER1 bis BILDER3 wurden gelöscht 

Erklärung:
Die drei Verzeichnisse BILDER1 bis BILDER3 werden wieder von Platte C:\ gelöscht

Soweit meine Beschreibungen zum erstellen eine Slideshow unter DOS.

Gruß Frank
frank9652
Norton Commander
Beiträge: 142
Registriert: Di 27. Mär 2007, 13:03
Wohnort: Göppingen

Beitrag von frank9652 »

Hallo Leute!

DOSferatu hat sein Programm dahingehend geändert, daß in der Batch P2.bat nicht mehr händisch die Nummern der Bilder angegeben werden müssen, sondern daß automatisch der Inhalt eines Verzeichnisses ausgelesen wird, und diese Bildernamen dann verwendet werden.
Das hat den Vorteil, daß man die Batch P2.bat nicht mehr vor jedem Ablauf händisch ändern muß.

Dazu muß der folgende Code in P2.bat

Code: Alles auswählen

c:\dostools\numlist\numlist.exe num1.bat *1508-1574 c:\dostools\jpeg\jpegtran.exe -rotate 90 c:\bilder1\pict****.jpg c:\bilder3\pict****.jpg

c:\dostools\numlist\numlist.exe num2.bat *1597-1598 c:\dostools\jpeg\jpegtran.exe -rotate 270 c:\bilder2\pict****.jpg c:\bilder3\pict****.jpg 
gegen folgenden Code ausgetauscht werden

Code: Alles auswählen

CD C:\BILDER1
C:\DOSTOOLS\NUMLIST\NUMLIST.EXE C:\DOSTOOLS\BATCH\NUM1.BAT &PICT*.JPG C:\DOSTOOLS\JPEG\JPEGTRAN.EXE -ROTATE 90 C:\BILDER1\&1 C:\BILDER3\&2

CD C:\BILDER2
C:\DOSTOOLS\NUMLIST\NUMLIST.EXE C:\DOSTOOLS\BATCH\NUM2.BAT &PICT*.JPG C:\DOSTOOLS\JPEG\JPEGTRAN.EXE -ROTATE 270 C:\BILDER2\&1 C:\BILDER3\&2
Und das Programm "NUMLIST" von Dosferatu durch die neue Version ersetzt werden.
http://www.imperial-games.de/html/dosa2.htm

Gruß Frank[/code]
frank9652
Norton Commander
Beiträge: 142
Registriert: Di 27. Mär 2007, 13:03
Wohnort: Göppingen

Beitrag von frank9652 »

Noch ein Nachtrag:
Warum überhaupt solch ein Aufwand? Bilder als Slideshows ablaufen zu lassen, gibt es doch viele?

Durch obige Batches ist es mir möglich eine Slideshow unter DOS auf dem Libretto (Subnotebook) ablaufen zu lassen, und VORHER die Hochkantbilder rechts- bzw. links herum drehen zu können, so daß man beim betrachten der Hochkantbilder keine Genickstarre bekommt. Und das ohne viel Handarbeit.

Gruß Frank
FPU
HELP.COM-Benutzer
Beiträge: 38
Registriert: Mi 24. Dez 2008, 16:38

Beitrag von FPU »

Äh... es gibt doch Bildbetrachter, die die Bilder automatisch anhand der EXIF Daten richtig herum gedreht anzeigen(?)
frank9652
Norton Commander
Beiträge: 142
Registriert: Di 27. Mär 2007, 13:03
Wohnort: Göppingen

Beitrag von frank9652 »

Äh... es gibt doch Bildbetrachter, die die Bilder automatisch anhand der EXIF Daten richtig herum gedreht anzeigen(?)
Deine Aussage ist nicht ganz korrekt.
Generell jeder Bildbetrachter zeigt ein Bild so an, wie die Daten in der EXIF hinterlegt sind. Aber woher soll der Bildbetrachter wissen, ob ein Bild im hochformat fotographiert wurde oder nicht?
Er weiß also nicht wie herum ein Bild "richtig" angezeigt wird.
Dazu gibt es zwei verschiedene Möglichkeiten.

1). Ich drehe mit einer Tastenkombination ein Bild nachdem es auf dem Bildschirm angezeigt wurde. Dazu muß dann das Bild noch einmal (richtig gedreht) auf dem Bildschirm angezeigt werden.
Das geschieht zumeist "virtuell" im Arbeitsspeicher ohne daß die EXIF-Daten verändert werden. Das ist zwar für Windowsprogramme kein Problem die vollen Zugriff auf den Arbeitsspeicher haben, aber für DOS-Programme ist das sehr problematisch.
Einmal fehlt meistens der volle Zugriff auf den Arbeitsspeicher weshalb man dann mit Auslagerungsdateien arbeiten muß.
Und zum anderen muß das Bild dann komplett neu entkomprimiert werden, was bei JPEG sehr rechenintensiv ist.

2). Oder ich drehe die Hochformatbilder bevor die Slideshow abläuft.

Im Prinzip hast du recht, daß Bildbetrachter Bilder drehen können. Aber zeige mir einen DOS-Bildbetrachter oder ein DOS-Programm das so etwas relativ schnell im Batchbetrieb mit JPEG machen kann. Für DOS gibt es so etwas kaum, da das JPEG-Format zu einer Zeit herauskam, als Windows schon längst Standart war.
Soweit ich weiß, stammt das Programm zum JPEG-Bild-drehen direkt von der JPEG-Foundation die den JPEG-Standart festgelegt (und beschrieben) hat.

Klar liest ein Bildbetrachter die Daten für die X-Achse und die Y-Achse aus.
Damit ein im hochformat photographiertes Bild aber richtig angezeigt wird, müssen diese beiden Werte (für die X-Achse und Y-Achse) vertauscht werden.
Sonst mußt du bei jedem Hochformatbild den Kopf um 90 Grad nach links -oder rechts bei der Ansicht drehen.

Klar, es gibt Bildbetrachter die können ein Bild drehen nachdem es angezeigt wurde. -Aber das nervt mich während der Slideshow ein Bild noch einmal drehen zu müssen.
Mir ging es darum, daß die hochformatbilder VOR der Slideshow mit möglichst geringem Aufwand gedreht werden, BEVOR die Slideshow abgespielt wird, und dazu alles noch unter DOS.

-Dazu kommt noch (wer ein wenig weiß wie das JPEG-Format aufgebaut ist), daß dazu unheimlich viel Arbeitsspeicher notwendig ist bis ein JPEG-Bild angezeigt wird.
So die Faustregel besagt, daß man für ein 1 MByte-Bild ca. 5 MByte Arbeitsspeicher benötigt.
Das ist für Windows und 32-Bit kein Problem, aber unter DOS schon.

Wie ich DOSferatu schon erklärte ging es mir darum:
Ich mache im Urlaub tagsüber Bilder, schiebe die SD-Karte in meinen Libretto, erstelle mit wenigen Handgriffen die Slideshow bei der die im hochformat photographierten Bilder korrekt angezeigt werden ohne daß man sich den Kopf verrenken muß.

Die Schwierigkeit bestand darin das alles zu 90% automatisch und ohne viel Zeitaufwand machen zu können, und zum anderen Programme zu finden, die so etwas unter DOS können.

Zur Info:
Der Toshiba Libretto CT110 ist ein sogenanntes "Netbook" (damals gab es diese Bezeichnung noch nicht) mit einem 7,1 Display , 233 MHz Pentium und 32 MB Ram.
Der CT110 wurde früher mit Win95 oder Win98 ausgeliefert.

Heute sind solche Minilaptops wieder groß in Mode, ausgelöst durch die EeePC-Reihe von Asus.

Gruß Frank
FPU
HELP.COM-Benutzer
Beiträge: 38
Registriert: Mi 24. Dez 2008, 16:38

Beitrag von FPU »

Es gibt Kameras, die speichern die Ausrichtung der Kamera bei der Aufnahme in den EXIF Daten.

http://sylvana.net/jpegcrop/exif_orientation.html
In einer der Spezifikationen mal nach "orientation" suchen:
http://www.exif.org/specifications.html
frank9652
Norton Commander
Beiträge: 142
Registriert: Di 27. Mär 2007, 13:03
Wohnort: Göppingen

Beitrag von frank9652 »

Das es mittlerweile Kameras gibt, die die Ausrichtung speichern, wußte ich nicht (bin da so nicht auf dem laufenden).
Die Links wegen JPEG und EXIF sind sehr gut, die kannte ich bisher noch nicht, obwohl ich mich eine zeitlang recht intensiv um das JPEG-Format bemüht hatte.
Ich hatte einen Programmierer mit Informationen zu dem Format versorgt, damit er einen Importfilter für seinen Geos-Bildbetrachter programmieren konnte.

Gruß Frank
Antworten