web-dev-qa-db-fra.com

Un script batch pour redimensionner les images

Je cherche de l'aide pour écrire un script batch pour redimensionner un tas d'images .jpg.

Je n'ai pas beaucoup d'expérience avec les scripts batch. Mais cette tâche sera effectuée sur une machine Windows et j'ai donc pensé qu'un script batch pourrait être une bonne façon de procéder.

Je suis toujours intéressé à entendre des idées et des approches alternatives, ou à être mis au courant d'éléments auxquels je n'ai pas pensé.

Ci-dessous, j'ai énuméré les étapes/besoins de base du script:

1) The images are located in a folder & are all(or should be) 500 x
500.

2) I need copy & past the images to a new folder, where they will be
resized to 250 x 250.

3) I then need to repeat step 2 but this time resize to 125 x 125.
14
Reed Williams
14

Une fois que vous avez installé ImageMagick pour Windows , vous pouvez utiliser magick outil de ligne de commande , par exemple.

magick.exe mogrify -resize 250x250 -path 250x250/ *.png *.jpg
magick.exe mogrify -resize 125x125 -path 125x125/ *.png *.jpg

Remarque: assurez-vous que votre magick.exe est dans votre variable système PATH et vous pointez sur les dossiers existants ou créés (par exemple mkdir 250x250/ 125x125/ dans le cas ci-dessus).

Pour Linux/Ubuntu, voir: Comment redimensionner facilement des images via la ligne de commande?

16
kenorb

vous pouvez vérifier scale.bat qui peut redimensionner les images sans avoir besoin d'installer de logiciel supplémentaire - il utilise uniquement les capacités intégrées de Windows:

@echo off
set "source_folder=c:\images"
set "result_folder_1=c:\res1"
set "result_folder_2=c:\res2"

for %%a in ("%source_folder%\*jpg") do (
   call scale.bat -source "%%~fa" -target "%result_folder_1%\%%~nxa" -max-height 250 -max-width 250 -keep-ratio no -force yes
)

for %%a in ("%source_folder%\*jpg") do (
   call scale.bat -source "%%~fa" -target "%result_folder_2%\%%~nxa" -max-height 125 -max-width 125 -keep-ratio no -force yes
)

Vérifiez également this .

7
npocmaka

Si vous voulez le faire spécifiquement sur la ligne de commande, peut-être pour que vous puissiez l'automatiser, il n'y a pas de commande spécifique dans Batch qui est faite pour la manipulation d'images. Vous pouvez coder quelque chose dans un JScript ou un autre langage et l'exécuter à partir de la ligne de commande, mais pourquoi le faire alors que des outils matures sont déjà disponibles pour cette tâche?

Je recommande ImageMagick .

Obtenez le binaire Windows portable, puis vous pouvez utiliser magick.exe pour faire ce que vous voulez assez facilement. Par exemple, pour redimensionner (de moitié) toutes les images png du dossier 1 en dossier 2:

@echo off
if not exist 2 md 2
for %%a in (1\*.png) do "path\to\magick.exe" -resize 50x50% "1\%~nxa" "2\%~nxa"
6
soja