Announcement

Collapse
No announcement yet.

Batch-Datei zum Austausch der zwei Hälften eines Bildes

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Batch-Datei zum Austausch der zwei Hälften eines Bildes

    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.
    Attached Files
Working...
X