Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @ECHO OFF
- SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
- COLOR 0A
- TITLE IMAGEMAGICK OPTIMIZE AND RESIZE IMAGES
- :------------------------------------------------------------------------------------------------
- REM Created By: SlyFox1186
- REM https://pastebin.com/u/slyfox1186
- REM Package Requirements: ImageMagick (DLL version) for Windows
- REM During the installation select "Include Legacy Files" in order
- REM to install mogrify.exe
- REM User input options:
- REM Choose the input and output file type
- REM Shrink, enlarge, or manually enter the output file size(s)
- REM File types supported: [ jpg | png | ico ]
- :------------------------------------------------------------------------------------------------
- PUSHD "%~dp0"
- IF NOT "%1"=="MAX" START /MAX CMD /D /C %0 MAX & GOTO :EOF
- :------------------------------------------------------------------------------------------------
- :SET_VARIABLES
- :------------------------------------------------------------------------------------------------
- SET MOGRIFY="%ProgramFiles%\ImageMagick\mogrify.exe"
- REM USE THESE ICON FILE SIZES IF THE USER
- REM DOES NOT WANT TO ENTER THE SIZE MANUALLY
- REM FIND 'ICO_METHOD' BELOW FOR MORE INFO
- SET ICO_SIZES=256,128,96,72,64,48,32,24,16
- :------------------------------------------------------------------------------------------------
- :DELETE_PREVIOUS_RUNS
- :------------------------------------------------------------------------------------------------
- REM IF DETECTED PROMPT THE USER TO DELETE ALL FILES FROM A PRIOR RUN
- IF EXIST "Output" (
- ECHO OUTPUT FILES DETECTED: DELETE THEM? & ECHO=
- ECHO [1] Yes
- ECHO [2] No & ECHO=
- CHOICE /C 12 /N & CLS
- IF ERRORLEVEL 2 GOTO IN_TYPE
- IF ERRORLEVEL 1 RD /Q /S "Output"
- )
- REM CREATE OUTPUT DIR
- MD "Output"
- :------------------------------------------------------------------------------------------------
- :IN_TYPE
- :------------------------------------------------------------------------------------------------
- REM PROMPT THE USER TO CHOOSE THE INPUT FILE TYPE
- CLS
- ECHO CHOOSE INPUT FILE TYPE & ECHO=
- ECHO [1] JPG
- ECHO [2] PNG
- ECHO [3] ICON
- ECHO [4] EXIT & ECHO=
- CHOICE /C 1234 /N & CLS
- IF ERRORLEVEL 4 GOTO :EOF
- IF ERRORLEVEL 3 SET "FILEIN=ico" & GOTO GET_IMG_OUTPUT
- IF ERRORLEVEL 2 SET "FILEIN=png" & GOTO GET_IMG_OUTPUT
- IF ERRORLEVEL 1 SET "FILEIN=jpg"
- :------------------------------------------------------------------------------------------------
- :GET_IMG_OUTPUT
- :------------------------------------------------------------------------------------------------
- REM PROMPT THE USER TO CHOOSE THE OUTPUT FILE TYPE
- CLS
- ECHO CHOOSE OUTPUT FILE TYPE & ECHO=
- ECHO [1] JPG
- ECHO [2] PNG
- ECHO [3] ICON
- ECHO [4] EXIT & ECHO=
- CHOICE /C 1234 /N & CLS
- IF ERRORLEVEL 4 GOTO :EOF
- IF ERRORLEVEL 3 SET "FILEOUT=ico" & GOTO PROCESS_CHOICES
- IF ERRORLEVEL 2 SET "FILEOUT=png" & GOTO PROCESS_CHOICES
- IF ERRORLEVEL 1 SET "FILEOUT=jpg"
- :PROCESS_CHOICES
- IF "%FILEIN%"=="jpg" IF "%FILEOUT%"=="jpg" GOTO RUN_OTHER
- IF "%FILEIN%"=="jpg" IF "%FILEOUT%"=="png" GOTO RUN_OTHER
- IF "%FILEIN%"=="jpg" IF "%FILEOUT%"=="ico" GOTO ICO_METHOD
- IF "%FILEIN%"=="png" IF "%FILEOUT%"=="jpg" GOTO RUN_OTHER
- IF "%FILEIN%"=="png" IF "%FILEOUT%"=="png" GOTO RUN_OTHER
- IF "%FILEIN%"=="png" IF "%FILEOUT%"=="ico" GOTO ICO_METHOD
- :------------------------------------------------------------------------------------------------
- :ICO_METHOD
- :------------------------------------------------------------------------------------------------
- CLS
- ECHO DO YOU WANT TO PICK THE OUTPUT PIXEL DIMENSIONS? & ECHO=
- ECHO [1] YES
- ECHO [2] NO & ECHO=
- CHOICE /C 12 /N & CLS
- IF ERRORLEVEL 2 GOTO RUN_ICO
- IF ERRORLEVEL 1 GOTO SET_DIMENSIONS
- :------------------------------------------------------------------------------------------------
- :RUN_ICO
- :------------------------------------------------------------------------------------------------
- REM RUN MOGRIFY ON ALL FILES
- SET CNT=0
- FOR %%G IN (*.%FILEIN%) DO (
- SET /A CNT+=1
- ECHO [ #!CNT! ] %%~nxG
- %MOGRIFY% -monitor -path Output/ -alpha off -background none ^
- -define icon:auto-resize="%ICO_SIZES%" -format %FILEOUT% "*.%FILEIN%[0]"
- )
- )
- SET DID_IT_WORK=%ERRORLEVEL%
- GOTO CHECK
- :------------------------------------------------------------------------------------------------
- :SET_DIMENSIONS
- :------------------------------------------------------------------------------------------------
- REM SET WIDTH
- :REDO1
- CLS
- SET ANS1=
- SET /P "ANS1=ENTER PIXEL WIDTH: "
- IF "%ANS1%" LEQ "1" (
- ECHO VALUE MUST BE A NUMBER GREATER THAN 1
- ECHO=
- PAUSE
- GOTO REDO1
- )
- REM SET HEIGHT
- :REDO2
- CLS
- SET ANS2=
- SET /P "ANS2=ENTER PIXEL HEIGHT: "
- IF "%ANS2%" LEQ "1" (
- ECHO VALUE MUST BE A NUMBER GREATER THAN 1
- ECHO=
- PAUSE
- GOTO REDO2
- )
- :------------------------------------------------------------------------------------------------
- :GET_IMG_SIZE
- :------------------------------------------------------------------------------------------------
- FOR /F "TOKENS=*" %%A IN ('identify -format "%%[fx:w]x%%[fx:h]" "*.%FILEIN%"') DO SET "INSIZE=%%A"
- CLS
- IF "%FILEIN%"=="ico" IF "%FILEOUT%"=="ico" GOTO SHRINK_IMG
- IF "%INSIZE%" LSS "%ANS1%x%ANS2%" GOTO SHRINK_IMG
- :------------------------------------------------------------------------------------------------
- :ENLARGE_IMG
- :------------------------------------------------------------------------------------------------
- SET /P "SHARP=ENTER A SHARPENING AMOUNT BETWEEN: 0.0 - 3.0: "
- CLS
- SET CNT=0
- FOR %%G IN (*.%FILEIN%) DO (
- SET /A CNT+=1
- ECHO [ #!CNT! ] %%~nxG
- %MOGRIFY% -monitor -path Output/ -filter Triangle -define filter:support=2 ^
- -sharpen 0x%SHARP%^^ -resize %ANS1%x%ANS2% -alpha on -background none ^
- -interlace none -colorspace sRGB -format %FILEOUT% "*.%FILEIN%[0]"
- )
- )
- SET DID_IT_WORK=%ERRORLEVEL%
- GOTO CHECK
- :------------------------------------------------------------------------------------------------
- :SHRINK_IMG
- :------------------------------------------------------------------------------------------------
- SET CNT=0
- FOR %%G IN (*.%FILEIN%) DO (
- SET /A CNT+=1
- ECHO [ #!CNT! ] %%~nxG
- %MOGRIFY% -monitor -path Output/ -resize %ANS1%x%ANS2% ^
- -alpha off -background none -format %FILEOUT% "*.%FILEIN%[0]"
- )
- )
- SET DID_IT_WORK=%ERRORLEVEL%
- GOTO CHECK
- :------------------------------------------------------------------------------------------------
- :RUN_OTHER
- :------------------------------------------------------------------------------------------------
- REM RUN MOGRIFY ON ALL PNG FILES IN SCRIPT'S WORKING DIRECTORY
- SET CNT=0
- FOR %%G IN (*.%FILEIN%) DO (
- FOR /F "TOKENS=*" %%H IN ('identify -format "%%[fx:w]x%%[fx:h]" "*.%FILEIN%"') DO (
- SET /A CNT+=1
- ECHO [ #!CNT! ] %%~nxG
- ECHO=
- %MOGRIFY% -monitor -path Output/ -filter Triangle -define filter:support=2 ^
- -thumbnail %%H -unsharp 0.25x0.08+8.3+0.045 -dither None -posterize 136 ^
- -quality 82 -define jpeg:fancy-upsampling=off -define png:compression-filter=5 ^
- -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all ^
- -interlace none -colorspace sRGB -format %FILEOUT% "*.%FILEIN%"
- )
- )
- :------------------------------------------------------------------------------------------------
- :CHECK
- :------------------------------------------------------------------------------------------------
- REM CHECK IF MOGRIFY WAS SUCCESSFUL
- CLS
- IF %DID_IT_WORK% EQU 1 GOTO THROW_ERROR
- COLOR 03
- ECHO [93mMogrify Completed[0m
- ECHO=
- PAUSE
- REM OPEN NEWLY CREATED FILES
- FOR %%G IN (Output\*.%FILEOUT%) DO START "" "%%~fG"
- GOTO :EOF
- :------------------------------------------------------------------------------------------------
- :THROW_ERROR
- :------------------------------------------------------------------------------------------------
- REM MOGRIFY WAS UNSUCCESSFUL
- CLS
- ECHO Error: Mogrify failed to convert the file^(s^). & ECHO=
- ECHO Please fix the error before re-running this script.
- ECHO=
- PAUSE
- START "" /MAX %EDITOR% "%0"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement