Lister les fichiers images par diemensions
Bonjour,
Dans un répertoire je cherche à lister les fichiers images en les classant par dimensions (pas par taille) c'est à dire en fonction des pixels.
En mode graphique j'affiche le tout en Détail j'ajoute la colonne Dimensions et c'est magique.
Seulement je voudrais faire ça de façon automatique pour ensuite supprimer les fichiers n'ayant pas de dimensions.
Connaîtriez-vous la commande qui fait ce tri ? J'imagine qu'elle existe vu que Windows le fait en mode graphique.
Merci de votre aide.
[BAT] Récupérer les dimensions (X,Y) d'une image
En batch pur tu ne peux pas.
Pour cela tu peux utiliser cette commande externe : GetImageDim.exe
Utilisation :
GetImageDim.exe fichier.[png,jpg,gif,bmp]
avec ce code pour récupérer les dimension des .JPG dur répertoire courant :
Test.bat :
Code:
1 2 3
| @echo off
for %%a in (*.jpg) do (
for /f "skip=1 tokens=1,2 delims= " %%b in ('GetImageDim.exe %%a') do echo Image : %%a X[%%b] Y[%%c]) |
Sinon grâce au COM en utilisant PowerShell ou VBS on peut imaginer des script mixte de ce genre. (Ici un BAT/POWERSHELL)
GetImageDim.bat :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
::GetImageDim.bat By SachaDee - 2014
@echo off&cls
(echo @echo off
echo For /f "delims=:" %%%%a In ^(^'
echo findstr ^/Bn "@PS" %%~nx0
echo '^) do Set /A Line=%%%%a
echo for ^/f "delims=" %%%%x in ^(^'more +%%Line%% %%^~nx0 ^^^| powershell -c -^'^) do echo %%%%x
echo exit ^/b
echo @PS
echo $image = New-Object -ComObject Wia.ImageFile
echo $image.LoadFile^("%1"^)
echo write $image.Width $image.Height
) >$Dim.bat
call $Dim.bat |
Utilisation :
GetImageDim.bat Nom_du_Fichier.jpg
Donc pour lister les .JPG du répertoire courant, avec leurs dimensions, en utilisant GetImageDim.bat :
affJpg.bat :
Code:
1 2 3 4 5 6 7 8
| @echo off
setlocal enabledelayedexpansion
for %%a in (*.jpg) do (
for /f "tokens=1,2 delims=-" %%b in ('Call GetImageDim.bat %%a') do (
set "$Largeur=%%b"
set "$Hauteur=%%c"
echo Image : %%a X[!$Largeur:~1!] Y[!$Hauteur%!])) |
Pour le script mixte BAT/POWERSHEL je me suis inspiré de la technique publié ICI par notre ami @I'm Here que je salut au passage.
On peut utiliser la même technique avec du VBS :
GetImageDim.vbs :
Code:
1 2 3 4
|
Set objImage = CreateObject("WIA.ImageFile")
objImage.LoadFile WScript.Arguments.item(0)
WScript.Echo objImage.Width objImage.Height |
Utilisation :
GetImageDim.vbs Nom_du_Fichier.jpg
Que vous pouvez adapter de la même manière pour faire un mixte BAT/VBS
;)