Advertisement
slyfox1186

optimize-and-resize-images.bat

Jun 27th, 2021 (edited)
501
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 7.93 KB | None | 0 0
  1. @ECHO OFF
  2. SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
  3. COLOR 0A
  4. TITLE IMAGEMAGICK OPTIMIZE AND RESIZE IMAGES
  5.  
  6. :------------------------------------------------------------------------------------------------
  7.  
  8. REM Created By: SlyFox1186
  9. REM https://pastebin.com/u/slyfox1186
  10.  
  11. REM Package Requirements: ImageMagick (DLL version) for Windows
  12. REM During the installation select "Include Legacy Files" in order
  13. REM to install mogrify.exe
  14.  
  15. REM User input options:
  16. REM Choose the input and output file type
  17. REM Shrink, enlarge, or manually enter the output file size(s)
  18.  
  19. REM File types supported: [ jpg | png | ico ]
  20.  
  21. :------------------------------------------------------------------------------------------------
  22.  
  23. PUSHD "%~dp0"
  24. IF NOT "%1"=="MAX" START /MAX CMD /D /C %0 MAX & GOTO :EOF
  25.  
  26. :------------------------------------------------------------------------------------------------
  27. :SET_VARIABLES
  28. :------------------------------------------------------------------------------------------------
  29.  
  30. SET MOGRIFY="%ProgramFiles%\ImageMagick\mogrify.exe"
  31.  
  32. REM USE THESE ICON FILE SIZES IF THE USER
  33. REM DOES NOT WANT TO ENTER THE SIZE MANUALLY
  34. REM FIND 'ICO_METHOD' BELOW FOR MORE INFO
  35. SET ICO_SIZES=256,128,96,72,64,48,32,24,16
  36.  
  37. :------------------------------------------------------------------------------------------------
  38. :DELETE_PREVIOUS_RUNS
  39. :------------------------------------------------------------------------------------------------
  40.  
  41. REM IF DETECTED PROMPT THE USER TO DELETE ALL FILES FROM A PRIOR RUN
  42. IF EXIST "Output" (
  43.     ECHO OUTPUT FILES DETECTED: DELETE THEM? & ECHO=
  44.     ECHO [1] Yes
  45.     ECHO [2] No & ECHO=
  46.     CHOICE /C 12 /N & CLS
  47.     IF ERRORLEVEL 2 GOTO IN_TYPE
  48.     IF ERRORLEVEL 1 RD /Q /S "Output"
  49. )
  50.  
  51. REM CREATE OUTPUT DIR
  52. MD "Output"
  53.  
  54. :------------------------------------------------------------------------------------------------
  55. :IN_TYPE
  56. :------------------------------------------------------------------------------------------------
  57.  
  58. REM PROMPT THE USER TO CHOOSE THE INPUT FILE TYPE
  59. CLS
  60. ECHO CHOOSE INPUT FILE TYPE & ECHO=
  61. ECHO [1] JPG
  62. ECHO [2] PNG
  63. ECHO [3] ICON
  64. ECHO [4] EXIT & ECHO=
  65.  
  66. CHOICE /C 1234 /N & CLS
  67.  
  68. IF ERRORLEVEL 4 GOTO :EOF
  69. IF ERRORLEVEL 3 SET "FILEIN=ico" & GOTO GET_IMG_OUTPUT
  70. IF ERRORLEVEL 2 SET "FILEIN=png" & GOTO GET_IMG_OUTPUT
  71. IF ERRORLEVEL 1 SET "FILEIN=jpg"
  72.  
  73. :------------------------------------------------------------------------------------------------
  74. :GET_IMG_OUTPUT
  75. :------------------------------------------------------------------------------------------------
  76.  
  77. REM PROMPT THE USER TO CHOOSE THE OUTPUT FILE TYPE
  78. CLS
  79. ECHO CHOOSE OUTPUT FILE TYPE & ECHO=
  80. ECHO [1] JPG
  81. ECHO [2] PNG
  82. ECHO [3] ICON
  83. ECHO [4] EXIT & ECHO=
  84.  
  85. CHOICE /C 1234 /N & CLS
  86.  
  87. IF ERRORLEVEL 4 GOTO :EOF
  88. IF ERRORLEVEL 3 SET "FILEOUT=ico" & GOTO PROCESS_CHOICES
  89. IF ERRORLEVEL 2 SET "FILEOUT=png" & GOTO PROCESS_CHOICES
  90. IF ERRORLEVEL 1 SET "FILEOUT=jpg"
  91.  
  92. :PROCESS_CHOICES
  93. IF "%FILEIN%"=="jpg" IF "%FILEOUT%"=="jpg" GOTO RUN_OTHER
  94. IF "%FILEIN%"=="jpg" IF "%FILEOUT%"=="png" GOTO RUN_OTHER
  95. IF "%FILEIN%"=="jpg" IF "%FILEOUT%"=="ico" GOTO ICO_METHOD
  96. IF "%FILEIN%"=="png" IF "%FILEOUT%"=="jpg" GOTO RUN_OTHER
  97. IF "%FILEIN%"=="png" IF "%FILEOUT%"=="png" GOTO RUN_OTHER
  98. IF "%FILEIN%"=="png" IF "%FILEOUT%"=="ico" GOTO ICO_METHOD
  99.  
  100. :------------------------------------------------------------------------------------------------
  101. :ICO_METHOD
  102. :------------------------------------------------------------------------------------------------
  103.  
  104. CLS
  105. ECHO DO YOU WANT TO PICK THE OUTPUT PIXEL DIMENSIONS? & ECHO=
  106. ECHO [1] YES
  107. ECHO [2] NO & ECHO=
  108.  
  109. CHOICE /C 12 /N & CLS
  110.  
  111. IF ERRORLEVEL 2 GOTO RUN_ICO
  112. IF ERRORLEVEL 1 GOTO SET_DIMENSIONS
  113.  
  114. :------------------------------------------------------------------------------------------------
  115. :RUN_ICO
  116. :------------------------------------------------------------------------------------------------
  117.  
  118. REM RUN MOGRIFY ON ALL FILES
  119. SET CNT=0
  120. FOR %%G IN (*.%FILEIN%) DO (
  121.         SET /A CNT+=1
  122.         ECHO [ #!CNT! ] %%~nxG
  123.         %MOGRIFY% -monitor -path Output/ -alpha off -background none ^
  124.         -define icon:auto-resize="%ICO_SIZES%" -format %FILEOUT% "*.%FILEIN%[0]"
  125.     )
  126. )
  127.  
  128. SET DID_IT_WORK=%ERRORLEVEL%
  129. GOTO CHECK
  130.  
  131. :------------------------------------------------------------------------------------------------
  132. :SET_DIMENSIONS
  133. :------------------------------------------------------------------------------------------------
  134.  
  135. REM SET WIDTH
  136. :REDO1
  137. CLS
  138. SET ANS1=
  139. SET /P "ANS1=ENTER PIXEL WIDTH: "
  140. IF "%ANS1%" LEQ "1" (
  141.     ECHO VALUE MUST BE A NUMBER GREATER THAN 1
  142.     ECHO=
  143.     PAUSE
  144.     GOTO REDO1
  145. )
  146.  
  147. REM SET HEIGHT
  148. :REDO2
  149. CLS
  150. SET ANS2=
  151. SET /P "ANS2=ENTER PIXEL HEIGHT: "
  152. IF "%ANS2%" LEQ "1" (
  153.     ECHO VALUE MUST BE A NUMBER GREATER THAN 1
  154.     ECHO=
  155.     PAUSE
  156.     GOTO REDO2
  157. )
  158.  
  159. :------------------------------------------------------------------------------------------------
  160. :GET_IMG_SIZE
  161. :------------------------------------------------------------------------------------------------
  162.  
  163. FOR /F "TOKENS=*" %%A IN ('identify -format "%%[fx:w]x%%[fx:h]" "*.%FILEIN%"') DO SET "INSIZE=%%A"
  164. CLS
  165. IF "%FILEIN%"=="ico" IF "%FILEOUT%"=="ico" GOTO SHRINK_IMG
  166. IF "%INSIZE%" LSS "%ANS1%x%ANS2%" GOTO SHRINK_IMG
  167.  
  168. :------------------------------------------------------------------------------------------------
  169. :ENLARGE_IMG
  170. :------------------------------------------------------------------------------------------------
  171.  
  172. SET /P "SHARP=ENTER A SHARPENING AMOUNT BETWEEN: 0.0 - 3.0: "
  173. CLS
  174. SET CNT=0
  175. FOR %%G IN (*.%FILEIN%) DO (
  176.         SET /A CNT+=1
  177.         ECHO [ #!CNT! ] %%~nxG
  178.         %MOGRIFY% -monitor -path Output/ -filter Triangle -define filter:support=2 ^
  179.         -sharpen 0x%SHARP%^^ -resize %ANS1%x%ANS2% -alpha on -background none ^
  180.         -interlace none -colorspace sRGB -format %FILEOUT% "*.%FILEIN%[0]"
  181.     )
  182. )
  183.  
  184. SET DID_IT_WORK=%ERRORLEVEL%
  185. GOTO CHECK
  186.  
  187. :------------------------------------------------------------------------------------------------
  188. :SHRINK_IMG
  189. :------------------------------------------------------------------------------------------------
  190.  
  191. SET CNT=0
  192. FOR %%G IN (*.%FILEIN%) DO (
  193.         SET /A CNT+=1
  194.         ECHO [ #!CNT! ] %%~nxG
  195.         %MOGRIFY% -monitor -path Output/ -resize %ANS1%x%ANS2% ^
  196.         -alpha off -background none -format %FILEOUT% "*.%FILEIN%[0]"
  197.     )
  198. )
  199.  
  200. SET DID_IT_WORK=%ERRORLEVEL%
  201. GOTO CHECK
  202.  
  203. :------------------------------------------------------------------------------------------------
  204. :RUN_OTHER
  205. :------------------------------------------------------------------------------------------------
  206.  
  207. REM RUN MOGRIFY ON ALL PNG FILES IN SCRIPT'S WORKING DIRECTORY
  208. SET CNT=0
  209. FOR %%G IN (*.%FILEIN%) DO (
  210.     FOR /F "TOKENS=*" %%H IN ('identify -format "%%[fx:w]x%%[fx:h]" "*.%FILEIN%"') DO (
  211.         SET /A CNT+=1
  212.         ECHO [ #!CNT! ] %%~nxG
  213.         ECHO=
  214.         %MOGRIFY% -monitor -path Output/ -filter Triangle -define filter:support=2 ^
  215.         -thumbnail %%H -unsharp 0.25x0.08+8.3+0.045 -dither None -posterize 136 ^
  216.         -quality 82 -define jpeg:fancy-upsampling=off -define png:compression-filter=5 ^
  217.         -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all ^
  218.         -interlace none -colorspace sRGB -format %FILEOUT% "*.%FILEIN%"
  219.     )
  220. )
  221.  
  222. :------------------------------------------------------------------------------------------------
  223. :CHECK
  224. :------------------------------------------------------------------------------------------------
  225.  
  226. REM CHECK IF MOGRIFY WAS SUCCESSFUL
  227. CLS
  228. IF %DID_IT_WORK% EQU 1 GOTO THROW_ERROR
  229. COLOR 03
  230. ECHO Mogrify Completed
  231. ECHO=
  232. PAUSE
  233. REM OPEN NEWLY CREATED FILES
  234. FOR %%G IN (Output\*.%FILEOUT%) DO START "" "%%~fG"
  235. GOTO :EOF
  236.  
  237. :------------------------------------------------------------------------------------------------
  238. :THROW_ERROR
  239. :------------------------------------------------------------------------------------------------
  240.  
  241. REM MOGRIFY WAS UNSUCCESSFUL
  242. CLS
  243. ECHO Error: Mogrify failed to convert the file^(s^). & ECHO=
  244. ECHO Please fix the error before re-running this script.
  245. ECHO=
  246. PAUSE
  247. START "" /MAX %EDITOR% "%0"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement