PDA

View Full Version : Batch-Datei zum Austausch der zwei Hälften eines Bildes



Panther
25.07.2017, 09:57 AM
Batch-Datei zum Austausch der zwei Hälften eines Bildes (Batch to exchange the two halves of a picture)

Ich benutze diesen Stapel zum Austausch der zwei nebeneinander stehenden Hälften einer Grafik - die in meinem Fall die Vorder- und die Rückseite einer Münze zeigt. Diese Hälften werden dann gegeneinander ausgetauscht.
recycle.exe (v1.5, MaDdoG Software) ist nur dazu da, die Interimsdateien in den Papierkorb zu schieben.

Und ich mache es wie die ganz Großen: Ich übernehme keine Gewähr für irgendwas an dieser Stapeldatei.

Viel Spaß,
Panther

Ich weiß, Euer Dank ist wie der des Vaterlands. :)

---

@echo off
REM Stapel zum automatischen Austausch der beiden Hälften eines Bildes, das vertikal/horizontal geteilt wird.
REM Der Pfad zu i_view32.exe muss in $ivp definiert sein.
REM
set $version=2017-07-18 v2.0 Th. Salein
REM Ben”tigt: i_view32.exe, recycle.exe, choice.exe, findstr.exe
REM Getestet unter Win7-32Bit.
REM Fehler noch zu beseitigen:

if not "%OS%"=="Windows_NT" goto H
if "%1"=="" goto H
for %%a in (? h H help) do (
if "%1"=="/%%a" goto H
if "%1"=="-%%a" goto H
)

echo.
echo Seitentausch der beiden neben- oder bereinander stehenden H„lften eines Bildes
echo %$version%
echo.

set $debug=0
set $trennung=v
if "%2"=="/h" set $trennung=h
if "%2"=="-h" set $trennung=h
if not "%$trennung%"=="v" if not "%$trennung%"=="h" goto F5
if "%3"=="/d" set $debug=1
if "%3"=="-d" set $debug=1
if not exist %1 goto F1
REM Pfad zu IrfanView:
set $ivp=P:\Anwendungen\grafik\IrfanView
if not exist %$ivp%\i_view32.exe goto F0
if not exist %temp% goto F2
set $LTeil=%temp%\$interimL.png
set $RTeil=%temp%\$interimR.png
set $infodatei=%temp%\$interim.txt
rem Die Kompressionsqualität für die erzeugte JPG-Grafik:
set $jpgq=75
recycle.exe /? >NUL
if %errorlevel% GEQ 2 goto F4


REM 1. Grafikinformationen ermitteln
echo.
echo 1. Grafikinformationen ermitteln ...
%$ivp%\i_view32.exe %1 /info=%$infodatei%
if not exist %$infodatei% goto F3
for /f "tokens=4,6" %%i in ('findstr /C:^"Image dimensions^" %$infodatei%') do (
set $B=%%i
set $H=%%j
)
set /a "$B2=%$B% / 2"
set /a "$H2=%$H% / 2"
if "%$trennung%"=="v" (
echo Trennung vertikal.
echo Breite: %$B% px, halbe Breite: %$B2% px
echo H”he : %$H% px
)
if "%$trennung%"=="h" (
echo Trennung horizontal.
echo Breite: %$B% px
echo H”he : %$h% px, halbe H”he: %$H2% px
)
del %$infodatei% >NUL

REM 2. Bild vertikal teilen in 2 PNG-Grafiken
echo.
echo 2. Bild teilen ...
if "%$trennung%"=="v" (
%$ivp%\i_view32.exe %1 /crop=^(0,0,%$B2%,%$H%,0^) /convert=%$LTeil%
rem das Schöne ist, IrfanView rechnet in der Crop-Funktion:
%$ivp%\i_view32.exe %1 /crop=^(%$B2%+1,0,%$B2%,%$H%,0^) /convert=%$RTeil%
)
if "%$trennung%"=="h" (
%$ivp%\i_view32.exe %1 /crop=^(0,0,%$B%,%$H2%,0^) /convert=%$LTeil%
%$ivp%\i_view32.exe %1 /crop=^(0,%$H2%+1,%$B%,%$H2%,0^) /convert=%$RTeil%
)

REM 3. PNG-Grafiken in anderer Folge zusammensetzen
echo.
echo 3. Bilder anders zusammensetzen ...
if "%$trennung%"=="v" %$ivp%\i_view32.exe /panorama=^(1,%$RTeil%,%$LTeil%^) /convert=%temp%\YY.png
if "%$trennung%"=="h" %$ivp%\i_view32.exe /panorama=^(2,%$RTeil%,%$LTeil%^) /convert=%temp%\YY.png
echo.
echo Bitte nun in IrfanView prfen ...
%$ivp%\i_view32.exe %temp%\YY.png
choice.exe /C JYN /N /M "Stimmt das Ergebnis? [jn]: "
if %errorlevel% GTR 2 goto X2
%$ivp%\i_view32.exe %temp%\YY.png /jpgq=%$jpgq% /convert=%1
if "%$debug%"=="0" goto X3
goto X2

:H
echo.
echo Austausch der beiden H„lften eines Bildes,
echo das entweder vertikal oder horizontal geteilt wird.
echo %$version%
echo.
echo Syntax: %0 Mnzenbild.erw [-h]
echo.
echo Bedingungen:
echo 1. Der Parameter enth„lt keine Leerzeichen und Pfade im Namen.
echo 2. Mnzenbild.erw ist eine Grafik, die IrfanView anzeigen kann,
echo auch eine PNG-Grafik.
echo 3. Wird die Teilungsart nicht angegeben, gilt vertikale Teilung.
echo.
echo Bitte manuell vor der Speicherung als PNG die abs. H”he mit [Strg-R] einstellen.
echo.
echo Es wird eine Grafik im Originalformat erzeugt, wenn JPG, dann mit %jpgq%%%
echo Kompression. Die Originaldatei wird erst nach Rckfrage gel”scht, die
echo Interimsdateien im PNG-Format dann in den Papierkorb verschoben.
echo Zur Geschwindigkeitsverbesserung sollte die PNG-Kompressionstufe auf 0
echo gesetzt sein.
echo.
echo Zur Ausfhrung notwendig: i_view32.exe, recycle.exe, choice.exe, findstr.exe
echo.
goto :EOF

:F0
echo.
echo Fehler F0: i_view32.exe nicht gefunden.
echo Abbruch.
goto X2

:F1
echo.
echo Fehler F1: Datei %1 nicht gefunden.
echo Abbruch.
goto X2

:F2
echo.
echo Fehler F2: Tempor„rverz. %temp% nicht gefunden.
echo Abbruch.
goto X2

:F3
echo.
echo Fehler F3: Erzeugte Informationstextdatei %$infodatei% nicht gefunden.
echo Abbruch.
goto X2

:F4
echo.
echo Fehler F4: recycle.exe nicht gefunden.
echo Abbruch.
goto X2

:F5
echo.
echo Fehler F5: Trennungsrichtung nicht angegeben.
echo Abbruch.
goto H

:X2
echo Debug-Infos (bergebene und ermittelte Parameter):
echo $ivp : %$ivp%
echo $B : %$B%
echo $H : %$H%
if defined %$B2% echo $B2 : %$B2%
if defined %$H2% echo $H2 : %$H2%
echo $LTeil : %$LTeil%
echo $RTeil : %$RTeil%
echo $infodatei : %$infodatei%
echo $jpgq : %$jpgq%
echo.
choice.exe /C jyn /N /M "%$LTeil% ansehen? [jn]: "
if %errorlevel% LSS 3 %$ivp%\i_view32.exe %$LTeil%
choice.exe /C jyn /N /M "%$RTeil% ansehen? [jn]: "
if %errorlevel% LSS 3 %$ivp%\i_view32.exe %$RTeil%
echo Weiter mit irgendeiner Taste ...
pause 1>NUL

:X3
REM Verschiebe Interims-PNG-Dateien in den Papierkorb ...
if exist %$L% recycle.exe -f %$L% >NUL
if exist %$R% recycle.exe -f %$R% >NUL
if exist %temp%\YY.png recycle.exe -f %temp%\YY.png >NUL
for %%i in (
version
debug
ivp
B
B2
H
H2
interim
LTeil
RTeil
infodatei
jpgq
trennung
) do ( if defined $%%i set $%%i= )

echo.
echo Fertig. ]Y[
echo.