Bonjour
Après avoir ouvert un dossier d'images dans un Terminal, quelle commande peut-on utiliser pour redimensionner celles-ci toutes en même temps
Merci
Commande pour redimensionner plusieurs images contenues dans un dossier
Commande pour redimensionner plusieurs images contenues dans un dossier
Modifié en dernier par Linuxing le mar. 11 déc. 2018 19:06, modifié 1 fois.
Laptop depuis le 16 juillet 2021 : Tuxedo Polaris 17 - Processeur Intel® Core I7 - 10750H / NVIDIA GeForce RTX 1650Ti / Full-HD IPS mat 144Hz / DDR4 SO-DIMM : 16 GB (1x 16GB) 3200Mhz CL22 Samsung / SSD: 1000 GB Samsung 860 EVO (M.2 SATAIII) / WLAN & Bluetooth: Intel Wi-Fi 6 AX200 & Bluetooth 5.1 (up to 2400Mbps). OS : Linux Mint 20.3 (Una) Mate depuis ce 16 janvier 2022
Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox
Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox
Re: Commande pour redimensionner plusieurs images contenues dans un dossier
Bonjour,
Tu ne veux pas le faire d'un clic droit sur un dossier ?...
soit ça, dans le dossier qui va bien
soit ça qui permmet aussi de modifier le poids des Images
Tu ne veux pas le faire d'un clic droit sur un dossier ?...
soit ça, dans le dossier qui va bien
Code : Tout sélectionner
#!/bin/bash
#
# Author : Mathieu Vilaplana <mathieu@creationgif.com>
# Author : Matthieu MARC <matthieu.marc@wanadoo.fr>
#
# Copyright (C) 2005,2006 Charles Bouveyron <charles.bouveyron@free.fr>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# pour l'internationalisation des messages
# to generate the i18n file from .po file :
# $ msgfmt -o .locale/fr/LC_MESSAGES/nis.mo .locale/fr/LC_MESSAGES/fr.po
export TEXTDOMAIN="nis"
export TEXTDOMAINDIR=`dirname $0`"/.locale/"
MAXCPT=50000;
nb_images=0;
selection="";
txt_error="`gettext 'error'`"
#test if a file has been selected
if [ $# -eq 0 ]; then
# zenity --error --title=$txt_error --text="`gettext 'You must select at least 1 file to process'`"
here=`pwd`"/."
files=`zenity --file-selection --multiple --separator="|" --filename="$here"`"|"
#if $? != 0, user click on cancel button, so exit
if [ "$?" != 0 ] ; then
exit
fi
cpt=0
# I put all filename in $selection here because I didn't managed to put filenames with whitespace in $*
while [ ${#files} -gt 0 ]; do
f="`echo $files |cut -f1 -d'|'`"
isimage=`file -bi "$f" |grep -c image`
if [ $isimage -eq 1 ]; then
selection[$nb_images]=$f
let "nb_images++"
fi
files=`echo $files |cut -f2- -d"|"`
let "cpt++"
# only to avoid infinite loop (do not occured normaly, but nobody never know.. perhaps!)
if [ $cpt -gt $MAXCPT ]; then
shift
fi
done
fi
#===================================
# SELECT SIZE DIALOG
txt_text="`gettext 'Choisir taille image'`"
txt_title=$txt_text
txt_size="`gettext 'Taille'`"
imgsize=`zenity --title "$txt_title" --text "$txt_text" --list --radiolist --separator=" " --column="" --column="$txt_size" FALSE "60x60" FALSE "90x80" FALSE "160x120" FALSE "220x140" FALSE "320x240" FALSE "640x480" FALSE "800x600" FALSE "1024x768" FALSE "1728x1296" TRUE "2592x1944" --height=220`
#if $? != 0, user click on cancel button, so exit
if [ "$?" != 0 ] ; then
exit
fi
#user must select a target size
imgsize=`echo $imgsize | sed 's/ max//g'`
if [ ! "$imgsize" ]; then
zenity --error --title=$txt_error --text="`gettext 'select a target size'`"
# just restart myself (more user friendly I think)
($0 "$*")&
exit
fi
#transform 640x480 en 640x640 for convert to respect proportions
himgsize=$imgsize
val1=`echo "$imgsize" | awk -F'x' '{ print $1 }'`
imgsize="${val1}x${val1}"
# END SELECT SIZE DIALOG
#=========================
#Select only images
while [ $# -gt 0 ]; do
isimage=`file -bi "$1" | grep -c image`
if [ $isimage -eq 1 ]; then
selection[$nb_images]=$1
let "nb_images++"
else
isdir=`file -b "$1" |grep -c directory`
if [ $isdir -eq 1 ]; then
for f in `ls -1 "$1"`; do
isimage=`file -bi "$1/$f" |grep -c image`
if [ $isimage -eq 1 ]; then
selection[$nb_images]="$1/$f"
let "nb_images++"
fi
done
fi
fi
shift
done
n=$nb_images
let "n=n-1"
(for i in `seq 0 $n`;do
picture=${selection[$i]}
img_filename=`basename "$picture"`
img_dirname=`dirname "$picture"`
#create directory if not exist and at least one image to process
if [ ! -d "$img_dirname/$himgsize" ]; then
mkdir -p "$img_dirname/$himgsize"
fi
let "compteur += 1"
echo "`gettext '# Processing image'` $compteur / $nb_images $img_filename ..."
convert -quality 80 -resize $imgsize "$picture" "$img_dirname/$himgsize/$img_filename"
#convert -quality 80 -resize $imgsize "$picture" $himgsize/"$picture"
let "progress = compteur*100/nb_images"
echo $progress
done
) | zenity --progress --auto-close --title="`gettext 'Scaling images'`" --text="`gettext 'Processing images ...'`" --percentage=0
(gnome-open "`dirname \"${selection[0]}\"`/$himgsize") &
exit
Code : Tout sélectionner
#!/bin/sh
# Auteur : Julien Leloup
# Site : http://leloup.org
# Version : 1.1
# Date : 26/01/2011
# Historique :
# - 1.1 - 26/01/2011 - Gestion des espaces dans le nom des fichiers
# - 1.0 - 24/10/2010 - Version initiale
# Dépendances :
# - zenity
# - imagemagick
# Installation :
# - Pré-requis : zenity et imagemagick doivent être installés
# - Rendre ce script exécutable
# - Déposer ce script dans le dossier $HOME/.gnome2/nautilus-scripts
# Utilisation : Accès par bouton droit / Scripts / image-redim après sélection d'une ou plusieurs images
# Fonctions :
# - Redimensionnement d'images par lot
# - Paramétrage d'une largeur et d'une hauteur maxi à ne pas dépasser, tout en conservant le ratio.
# - Paramétrage de la qualité de compression
# - Choix de la sortie (écrasement, préfixe)
# - Se base sur le type mime pour ne traiter que les images
# - N'agrandit pas les images dont les dimensions sont inférieures aux dimensions choisies
# Teste si l'utilisateur a cliqué sur annuler
f_annuler() {
if [ "$?" != 0 ] ; then
# On quitte le programme
exit
fi
}
# Message de valeur obligatoire
f_valeur() {
zenity --error --title="image-redim" --text="Vous devez choisir une valeur"
}
# Teste si au moins un fichier a été choisi
if [ $# -eq 0 ]; then
zenity --error --title="image-redim" --text="Vous devez sélectionner au moins une image pour utiliser ce programme."
exit 1
fi
# On force la saisie
while [ ! "$v_dimensions_max" ]; do
# Choix des dimensions maxi (attention, en cas d'ajout d'une nouvelle dimension, veillez à suivre la même structure <largeur>x<hauteur>)
v_dimensions_max=`zenity --list --title="image-redim" --text="Sélectionnez les dimensions maximales (en pixels)" --column="" "Personnalisé..." "640x480" "800x600" "1024x768" "1280x1024" "1680x1050" --hide-header`
# Si clic sur annuler
f_annuler
# Si clic sur valider sans avoir choisi de valeur
if [ ! "$v_dimensions_max" ]; then
f_valeur
fi
done
# Si choix personnalisé, saisie de la largeur
if [ "$v_dimensions_max" = "Personnalisé..." ] ; then
# On force la saisie
while [ ! "$v_largeur_max" ]; do
# Saisie de la largeur personnalisée
v_largeur_max=`zenity --entry --title="image-redim" --text="Saisissez une largeur personnalisée"`
# Si clic sur annuler
f_annuler
# Si clic sur valider sans avoir choisi de valeur
if [ ! "$v_largeur_max" ]; then
f_valeur
fi
# Si la valeur choisie n'est pas un entier positif
if [ ! $(echo "$v_largeur_max" | grep -E "^[0-9]+$") ] ; then
zenity --info --text="La largeur maxi doit être un entier positif"
# Réinitialisation de la valeur saisie
v_largeur_max=""
fi
done
# On force la saisie
while [ ! "$v_hauteur_max" ]; do
# Saisie de la hauteur personnalisée
v_hauteur_max=`zenity --entry --title="image-redim" --text="Saisissez une hauteur personnalisée"`
# Si clic sur annuler
f_annuler
# Si clic sur valider sans avoir choisi de valeur
if [ ! "$v_hauteur_max" ]; then
f_valeur
fi
# Si la valeur choisie n'est pas un entier positif
if [ ! $(echo "$v_hauteur_max" | grep -E "^[0-9]+$") ] ; then
zenity --info --text="La hauteur maxi doit être un entier positif"
# Réinitialisation de la valeur saisie
v_hauteur_max=""
fi
done
# Ecriture du choix personnalisé dans les dimensions maxi
v_dimensions_max=$v_largeur_max"x"$v_hauteur_max
fi
# Choix de la qualité d'image
v_qualite=`zenity --scale --title="image-redim" --text="Saisissez la qualité de l'image produite\n\n 100 : qualité excellente mais image lourde\n 0 : qualité très mauvaise mais image très légère\n 85 : bon compromis entre qualité et poids" --value=85 --min-value=0 --max-value=100`
# Si clic sur annuler
f_annuler
# On force la saisie
while [ ! "$v_sortie" ]; do
# Choix de la sortie
v_sortie=`zenity --list --title="image-redim" --text="Sélectionnez la sortie" --column="" "Ecrasement des images existantes" "Création d'images avec un préfixe" --hide-header`
# Si clic sur annuler
f_annuler
# Si clic sur valider sans avoir choisi de valeur
if [ ! "$v_sortie" ]; then
f_valeur
fi
done
# Comptage du nombre total de fichiers sélectionnées, images ou non
v_total=`file $* | wc -l`
# Compteur pour barre de progression
v_compteur=0
v_pourcentage=0
# Boucle sur les fichiers sélectionnés
(while [ $# -gt 0 ]; do
# Récupération du nom du fichier courant
v_fichier_courant="$1"
# Vérification de son type mime
v_mime_courant=`file -bi "$v_fichier_courant"`
v_fichier_est_image=`echo "$v_mime_courant" | grep image | wc -l`
# Si c'est bien une image
if [ ! $v_fichier_est_image -eq 0 ]; then
# Récupération de la largeur de l'image courante
v_largeur_avant=`identify -format '%w' "$v_fichier_courant"`
# Récupération de la hauteur de l'image courante
v_hauteur_avant=`identify -format '%h' "$v_fichier_courant"`
# Récupération de la largeur choisie
v_largeur_choisie=$(echo $v_dimensions_max | cut -d"x" -f1);
# Récupération de la hauteur choisie
v_hauteur_choisie=$(echo $v_dimensions_max | cut -d"x" -f2);
# Si au moins une dimension de l'image courante est supérieure ou égale à la dimension correspondante choisie par l'utilisateur
# (supérieur strict : -gt)
# (supérieure ou égal : -ge)
if [ $v_largeur_avant -ge $v_largeur_choisie ] || [ $v_hauteur_avant -ge $v_hauteur_choisie ] ; then
# Si écrasement des images existantes
if [ "$v_sortie" = "Ecrasement des images existantes" ] ; then
convert "$v_fichier_courant" -resize $v_dimensions_max -quality $v_qualite "$v_fichier_courant"
fi
# Si nouvelle image avec un préfixe
if [ "$v_sortie" = "Création d'images avec un préfixe" ] ; then
nouveauprefixe="image_redim_"
nouveaubasename=`basename "$v_fichier_courant"`
nouveaunom=$nouveauprefixe$nouveaubasename
convert "$v_fichier_courant" -resize $v_dimensions_max -quality $v_qualite "$nouveaunom"
fi
fi
fi
# Incrémentation du compteur de barre de progression
v_compteur=$(( v_compteur+=1 ))
# Calcul du pourcentage pour barre de progression
v_pourcentage=$(( v_compteur*100/v_total ))
# Transmission des informations à la barre de progression
echo "# $v_fichier_courant"
echo "$v_pourcentage"
shift
done
) | zenity --progress --text="image-redim" --percentage=0 --auto-kill --auto-close
# Fin du programme avec succès ;-)
zenity --info --text="Programme terminé avec succès."
Intel Pentium Dual CPU E2140 -- Nvidia GF108 -- 4 Go de RAM -- Ubuntu 18.10 -- DEEPIN 15.11
Intel Pentium CPU 4405U @ 2.10GHz × 4 -- Intel HD Graphics 510 (Skylake GT1) -- 4 Go de RAM -- Ubuntu 19.04 -- Ubuntu 18.04 -- DEEPIN 15.11 avec partition de données commune
Intel Pentium CPU 4405U @ 2.10GHz × 4 -- Intel HD Graphics 510 (Skylake GT1) -- 4 Go de RAM -- Ubuntu 19.04 -- Ubuntu 18.04 -- DEEPIN 15.11 avec partition de données commune
Re: Commande pour redimensionner plusieurs images contenues dans un dossier
Slt ,
il y a la commande mogrify et/ou la commande convert :
cd le /chemin/vers/mes/images
et la "convertion" :
dans cet exemple : 800 c'est la largeur en pixel , tu peux utiliser une valeur en % (ex:50%) , la hauteur sera un ratio calculer automatiquement
@+
il y a la commande mogrify et/ou la commande convert :
cd le /chemin/vers/mes/images
et la "convertion" :
Code : Tout sélectionner
mogrify -resize 800 *.*
@+
Distro: Debian 12 Bookworm Desktop: LXDE
Kernel: 6.1.0-19-amd64 Drive: Intel Nvme 240
CPU: Ryzen 3 PRO 2200GE RAM: 16 go Graphics Card: AMD ATI Radeon Vega Series
L'experience est quelque chose que vous obtenez, juste après que vous en ayez besoin
Kernel: 6.1.0-19-amd64 Drive: Intel Nvme 240
CPU: Ryzen 3 PRO 2200GE RAM: 16 go Graphics Card: AMD ATI Radeon Vega Series
L'experience est quelque chose que vous obtenez, juste après que vous en ayez besoin
Re: Commande pour redimensionner plusieurs images contenues dans un dossier
Merci à mézig et tyrry
Je retiens la solution de tyrry qui marche sans problème
Et je mets ce sujet en tant que résolu
Je retiens la solution de tyrry qui marche sans problème
Et je mets ce sujet en tant que résolu
Laptop depuis le 16 juillet 2021 : Tuxedo Polaris 17 - Processeur Intel® Core I7 - 10750H / NVIDIA GeForce RTX 1650Ti / Full-HD IPS mat 144Hz / DDR4 SO-DIMM : 16 GB (1x 16GB) 3200Mhz CL22 Samsung / SSD: 1000 GB Samsung 860 EVO (M.2 SATAIII) / WLAN & Bluetooth: Intel Wi-Fi 6 AX200 & Bluetooth 5.1 (up to 2400Mbps). OS : Linux Mint 20.3 (Una) Mate depuis ce 16 janvier 2022
Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox
Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox
Re: [RESOLU] Commande pour redimensionner plusieurs images contenues dans un dossier
Salut Linuxing,
La procédure pour passer un sujet en résolu a changé. Il faut simplement modifier l'attribut du sujet (et ajouter le petit bouclier vert si tout roule). voir tuto ici
Pour cette fois, je le fais pour toi
A+
David
La procédure pour passer un sujet en résolu a changé. Il faut simplement modifier l'attribut du sujet (et ajouter le petit bouclier vert si tout roule). voir tuto ici
Pour cette fois, je le fais pour toi
A+
David
PC1: Mobo: Gigabyte B550 AORUS Elite 2 / CPU: AMD Ryzen 7 3700X / GPU: MSI Radeon RX 580 Armor / RAM: 32 GB @3600 MHz CL16 / SSD: Samsung 970 EVO 500 GB / LM 20.2 Xfce
PC2: HP Pavilion 15 / AMD Ryzen 5 5500U with Radeon Graphics / 16GB RAM / 500 GB SSD / Debian 11 Xfce
PC3: Dell-Latitude E7240 / 2.1GHz i7-4600U / Intel Haswell-ULT HD 4400 / 8GB RAM / 250 GB Hard Drive / LM 20.2 Xfce
PC2: HP Pavilion 15 / AMD Ryzen 5 5500U with Radeon Graphics / 16GB RAM / 500 GB SSD / Debian 11 Xfce
PC3: Dell-Latitude E7240 / 2.1GHz i7-4600U / Intel Haswell-ULT HD 4400 / 8GB RAM / 250 GB Hard Drive / LM 20.2 Xfce
Re: Commande pour redimensionner plusieurs images contenues dans un dossier
Merci David, je viens de le faire dans l'autre sujet ; s'il y a encore un détail à combler, je compte sur la vigilance de mes lecteurs pour me le faire savoir
Laptop depuis le 16 juillet 2021 : Tuxedo Polaris 17 - Processeur Intel® Core I7 - 10750H / NVIDIA GeForce RTX 1650Ti / Full-HD IPS mat 144Hz / DDR4 SO-DIMM : 16 GB (1x 16GB) 3200Mhz CL22 Samsung / SSD: 1000 GB Samsung 860 EVO (M.2 SATAIII) / WLAN & Bluetooth: Intel Wi-Fi 6 AX200 & Bluetooth 5.1 (up to 2400Mbps). OS : Linux Mint 20.3 (Una) Mate depuis ce 16 janvier 2022
Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox
Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox