Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/08/2016, à 13:59

Kawawachikamach

Imagemagick [RÉSOLU]

Bonjour à tous et toutes.

J'ai crée un site internet et je mets beaucoup de photos qu'il me faut traiter par lots (renommage, redimensionnement, conversion de format etc...)

J’ai testé plusieurs logiciels comme Gimp et ses greffons, Phatch, Gwenview, Gthumb et d'autre.

Je m'essaie en ligne de commande avec imagemagick.

Je n'arrive pas à faire le boulot lorsque je veux traiter mes images par lots.

En fait je ne comprends pas ce que signifie le * comme dans

mogrify -resize 50% *.png

J'ai réussi à modifier une image dans 1 dossier mais pour plusieurs images dans un dossier, impossible.

J’ai essayé ceci :

mogrify /home/mon_pseudo/Téléchargements/mon_dossier -resize 50% *.jpg
mogrify /home/mon_pseudo/Téléchargements/mon_dossier -resize 50% *.jpeg
mogrify /home/mon_pseudo/Téléchargements/mon_dossier -resize 50% .jpg

J'essaie d'enlever  le *, modifier le .jpg en .jpeg etc.. mais rien n'y fait.

J'ai des erreurs comme ceci :

mogrify: pas de délégué pour décoder ce format d'image `' @ error/constitute.c/ReadImage/501.
mogrify: impossible d'ouvrir l'image `.jpeg': Aucun fichier ou dossier de ce type @ error/blob.c/OpenBlob/2712.
mogrify: pas de délégué pour décoder ce format d'image `' @ error/constitute.c/ReadImage/501.

Je suis un peu paumé, mais j'aimerais bien l'utiliser car cela me semble bien puissant.

En fait je ne sais pas si c'est un problème de chemin ou de *

Merci pour votre aide.

Dernière modification par Kawawachikamach (Le 01/09/2016, à 13:29)

Hors ligne

#2 Le 31/08/2016, à 14:22

ljere

Re : Imagemagick [RÉSOLU]

il serait plus simple de faire

cd /home/mon_pseudo/Téléchargements/mon_dossier
mogrify -resize 50% *.jpg

le * est un joker ça va donc traiter toute les fichiers jpg de ton dossier.


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#3 Le 31/08/2016, à 15:08

Kawawachikamach

Re : Imagemagick [RÉSOLU]

Merci à toi.

Je n'ai plus ces messages d'erreurs mais mes images ne sont pas réduites.

J'ai essayé avec .jpeg et .jpg au cas ou, mais non, ce la ne fonctionne toujours pas.

Je dois être une quiche..... sad

Hors ligne

#4 Le 31/08/2016, à 16:08

Sciensous

Re : Imagemagick [RÉSOLU]

S'agit-il bien de photos *.jpg ? ou *.JPG ? ...
que donne un

ls /home/mon_pseudo/Téléchargements/mon_dossier

edit: si il n'ya que des photos, tu peux aussi faire un mogrify -resize 50% *

Dernière modification par Sciensous (Le 31/08/2016, à 16:09)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#5 Le 31/08/2016, à 18:30

Kawawachikamach

Re : Imagemagick [RÉSOLU]

Bonsoir et merci.

Alors, Sciensous, pour la commande

ls /home/mon_pseudo/Téléchargements/mon_dossier

cela donne ceci:

championnat-lorraine-epinal-petites-categories-2014-001.jpeg  championnat-lorraine-epinal-petites-categories-2014-013.jpeg
championnat-lorraine-epinal-petites-categories-2014-002.jpeg  championnat-lorraine-epinal-petites-categories-2014-016.jpeg
championnat-lorraine-epinal-petites-categories-2014-004.jpeg  championnat-lorraine-epinal-petites-categories-2014-018.jpeg
championnat-lorraine-epinal-petites-categories-2014-007.jpeg  championnat-lorraine-epinal-petites-categories-2014-019.jpeg
championnat-lorraine-epinal-petites-categories-2014-008.jpeg  championnat-lorraine-epinal-petites-categories-2014-023.jpeg
championnat-lorraine-epinal-petites-categories-2014-010.jpeg  championnat-lorraine-epinal-petites-categories-2014-028.jpeg
championnat-lorraine-epinal-petites-categories-2014-011.jpeg  championnat-lorraine-epinal-petites-categories-2014-030.jpeg
championnat-lorraine-epinal-petites-categories-2014-012.jpeg  championnat-lorraine-epinal-petites-categories-2014-033.jpeg

J'ai essayé de faire sans l'extension jpg après * mais cela ne fonctionne pas.

Oui le dossier ne contient que des images .jpeg avec une dimension de 800px par 533px

Hors ligne

#6 Le 31/08/2016, à 19:24

Kawawachikamach

Re : Imagemagick [RÉSOLU]

Bonsoir.

Alors peu-être pour aider, pour arriver à modifier 1 image, je suis obligé de faire ceci :

convert /home/mon_pseudo/Téléchargements/mon_dossier/mon_image.JPG -resize 50% /home/mon_pseudo/Téléchargements/mon_dossier/mon_image.JPG

Hors ligne

#7 Le 31/08/2016, à 19:24

ljere

Re : Imagemagick [RÉSOLU]

logiquement ça donne

mogrify -resize 50% *.jpeg

ou

convert -resize 50% *.jpeg

ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#8 Le 31/08/2016, à 20:02

kholo

Re : Imagemagick [RÉSOLU]

salut,
j'ai deux trois trucs pour la réduction d'image
ces scripts sont à utiliser en tant que nautilus scripts (le premier comme script avec les images en arguments)
et sont à copier dans $HOME/.local/share/nautilus/scripts
pour ouvrir le dossier facilement faire :

nautilus $HOME/.local/share/nautilus/scripts/

Celui là est facile à comprendre et à modifier ; il crée un sous dossier avec une copie des images et réduit ces copies en % ou en taille :

#!/bin/bash

#~ Ce script réduit des photos
#~ il faut sélectionner un ou plusieurs fichiers

for i in $@; do
	if [ -d "$i" ]; then
		zenity --info --text="
		'$i' est un répertoire.
		usage : sélectionnez un ou plusieurs fichiers
		ils seront réduits en $resolution 
		dans un dossier $dirdest"
		exit
	fi
done

NB_PHOTOS=$#

#*********************************************************
# CETTE PARTIE PEUT ETRE ADAPTEE
# resolution="1024x768"
# resolution="800x600"
# resolution="2048x1536"
# dirdest=$resolution

resolution="20%"
dirdest="20_pour_cent"
#*********************************************************

mkdir "$dirdest"

for arg in "$@"
do
	cp "$arg" ./"$dirdest" && cd "$dirdest" && convert "$arg" -resize $resolution "$arg" && cd ..
	shift
done  | zenity --progress --pulsate --text="Traitement des $NB_PHOTOS photos" --auto-close --auto-kill
#~ zenity --info --text="Traitement des $NB_PHOTOS photos"
notify-send"Traitement des $NB_PHOTOS photos"
exit

Un second sur le même principe avec options et choix :
je l'ai appelé CUDAIR ! pour Créer Un Dossier Avec Images Réduites !

#!/bin/bash
#**********************************#
# kholo-informatique 2016
# www.kholo-informatique.fr
#**********************************#
# 
#**********************************#
# CUDAIR : "Créer Un Dossier Avec Images Réduites"
#**********************************#
#  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.
#**********************************#
nomLogiciel="$(basename "$0")" ;
FONCTION="Créer Un Dossier Avec Images Réduites - CUDAIR" ;
#**********************************#
VERSION_LOGICIEL="2016.03.26.1634" ;
#**********************************#
# NOTES DE VERSIONS
#
#**********************************#
# Ce script transforme des photos en différents formats
# dans un sous dossier du nom du format
# si un mauvais format est donné en valeur
# la conversion se basera sur la première valeur pour conserver le ratio d'origine
#**********************************#

function LOCALISATION {
# VARIABLES TEXTE
#**********************************#
txtMODE_DEBUGAGE="Le nom de ce programmme est différent de cudair
<b>passage en mode débugage</b>"
txtLAQUESTION="Choisissez votre résolution"

txtCOMPLEMENT="
Choisissez une option ou tapez une résolution
puis validez...
-------------------------------------
	format : hauteur x largeur
	sans espace 
-------------------------------------
faites échap ou esc pour quitter"

txtERREUR="
est un répertoire.
usage : sélectionnez un ou plusieurs fichiers
ils seront réduits dans un sous dossier
du nom de la résolution"

KA="800x600"
KB="1024x768"
KC="2048x1024"
KD="25%"
KE="50%"
KF="75%"

txt25_pour_cent="25_pour_cent"
txt50_pour_cent="50_pour_cent"
txt75_pour_cent="75_pour_cent"

txtInconnu="Inconnu"

txtPhotos_traitees="photos traitées : "

}
LOCALISATION

function Quitter {
	echo "quitter proprement"
	
	exit 0
}

function lancement {
	# zenity --info --text="Traitement des $NB_PHOTOS photos" ;

	# création du dossier de destination
	if [ ! -d "$dirdest" ] ; then
		# zenity --info --title="débugage" --text="création du dossier de destination" ;
		mkdir "$dirdest" ;
	fi

old_IFS=$IFS
IFS='
'
	for arg in $ARG ; do
		base=$(basename -- "$arg") ;
		# name=${base%.*} ;
		cp "$base" ./"$dirdest" && cd "$dirdest" && convert "$base" -resize $resolution "$base" && cd .. ;
		shift
	done  | zenity --progress --pulsate --text="$txtPhotos_traitees $NB_PHOTOS" --auto-close --auto-kill ;
	notify-send "$txtPhotos_traitees $NB_PHOTOS" ;
IFS=$old_IFS
}

function SiInconnu {
	zenity --question --text="Nom du dossier inconnu, \nContinuer tout de même ?";
	if [[ $? == 0 ]] ; then
		dirdest="Inconnu" ;
		lancement ;
	else
		Quitter ;
		exit ;
	fi
}

# if [ "$nomLogiciel" != "cudair - réduction d'image" ] ; then
	# zenity --info --title="mode débugage :" --text="$txtMODE_DEBUGAGE" ;
	# echo "mode débugage" ;
# fi

ARG="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"

if [ $ARG=="" ]; then
	echo "sortie..."
	exit
fi
old_IFS=$IFS
IFS='
'
for i in $ARG; do
	# zenity --info --title="débugage" --text=$i
	if [ -d "$i" ]; then
		# il faut sélectionner un ou plusieurs fichiers images
		# pas de dossier
		zenity --info --text="$i $txtERREUR"
		exit
	fi
done
IFS=$old_IFS

# zenity --info --text="$NAUTILUS_SCRIPT_SELECTED_URIS"
# exit

# Nombre de fichiers et donc de photos (normalement !)
NB_PHOTOS=$# ;

# Choix de la résolution ou du facteur de réduction
resolution=$(zenity --entry --title="$txtLAQUESTION" --text="$txtCOMPLEMENT" \
--entry-text="$KB" "$KA" "$KB" "$KC" "$KD" "$KE" "$KF") ;

case $resolution in
	$KA ) dirdest=$resolution ;
		lancement ;;
	$KB ) dirdest=$resolution ;
		lancement ;;
	$KC ) dirdest=$resolution ;
		lancement ;;
	$KD ) dirdest="$txt25_pour_cent" ;
		lancement ;;
	$KE ) dirdest="$txt50_pour_cent" ;
		lancement ;;
	$KF ) dirdest="$txt75_pour_cent" ;
		lancement ;;
	* ) dirdest="$txtInconnu" ;
		SiInconnu ;;
esac

exit

Hors ligne

#9 Le 31/08/2016, à 20:36

pingouinux

Re : Imagemagick [RÉSOLU]

Bonsoir,

ljere #7 a écrit :
convert -resize 50% *.jpeg

Attention : Si on a par exemple image1.jpeg image2.jpeg image3.jpeg image4.jpeg, cette commande va réduire les 3 premières images (sans toucher aux originaux), en les renommant image4-0.jpeg image4-1.jpeg image4-2.jpeg.

Dernière modification par pingouinux (Le 31/08/2016, à 20:37)

Hors ligne

#10 Le 31/08/2016, à 21:01

Sciensous

Re : Imagemagick [RÉSOLU]

on revient au post #2 adapté:

cd /home/mon_pseudo/Téléchargements/mon_dossier ; mogrify -resize 50% *.jpeg

(en tenant compte de la remarque de pinguinux)

Dernière modification par Sciensous (Le 31/08/2016, à 21:02)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#11 Le 01/09/2016, à 10:42

kholo

Re : Imagemagick [RÉSOLU]

Sciensous a écrit :

on revient au post #2 adapté:

cd /home/mon_pseudo/Téléchargements/mon_dossier ; mogrify -resize 50% *.jpeg

(en tenant compte de la remarque de pinguinux)

$HOME pour /home/mon_pseudo et les quottes pour les espaces éventuels dans les noms

cd "$HOME/Téléchargements/mon_dossier" ; mogrify -resize 50% *.jpeg

Hors ligne

#12 Le 01/09/2016, à 13:28

Kawawachikamach

Re : Imagemagick [RÉSOLU]

Bonjour à vous tous.

Génial, cela fonctionne maintenant.

Pour kholo
Ton script me paraît bien compliqué même si cela doit fonctionner du tonnerre, merci donc à toi pour ton aide. En tout cas ton code

cd "$HOME/Téléchargements/mon_dossier" ; mogrify -resize 50% *.jpeg

fonctionne parfaitement

Pour Sciensous
Ton code aussi marche impec

cd /home/mon_pseudo/Téléchargements/mon_dossier ; mogrify -resize 50% *.jpeg

J’ai testé ce code ci pour mettre dans un autre fichier toutes les images redimensionnées afin d'éviter d'écraser les images originales et cela fonctionne aussi :

cd "$HOME/Téléchargements/mon_fichier_original" ; mogrify -resize 50% -path /home/mon_pseudo/Téléchargements/mon_fichier_traite *.JPG

Bon maintenant je n'ai plus qu'à m'amuser à trouver les bons codes pour :

Supprimer les métadonnées, les conversions de format, les rotations et renommer les images.

Génial.

Merci à vous tous en tout cas.

Hors ligne

#13 Le 16/08/2018, à 19:00

kholo

Re : Imagemagick [RÉSOLU]

en passant par ici,
je met mon script en ligne à jour :

#!/bin/bash
#**********************************#
# kholo-informatique 2016-2018
# www.kholo-informatique.fr
#**********************************#
# 
#**********************************#
# CUDAIR : "Créer Un Dossier Avec Images Réduites"
#**********************************#
#  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.
#**********************************#
# nomLogiciel="$(basename "$0")" ;
nomLogiciel="${0##*/}" ;
FONCTION="Créer Un Dossier Avec Images Réduites - CUDAIR" ;
#**********************************#
VERSION_LOGICIEL="2018.08.16.1552" ;
#**********************************#
# NOTES DE VERSIONS
#
#**********************************#
# Ce script transforme des photos en différents formats
# dans un sous dossier du nom du format
# si un mauvais format est donné en valeur
# la conversion se basera sur la première valeur pour conserver le ratio d'origine
#**********************************#
frm_error(){
zenity --error --height "260" --width "490" "$@" 2>/dev/null
}
frm_infos(){
zenity --info --height "260" --width "490" "$@" 2>/dev/null
}

## LOCALISATION(){
## VARIABLES TEXTE
#**********************************#
txtLAQUESTION="Choisissez votre résolution"

txtCOMPLEMENT="
Choisissez une option ou tapez une résolution
puis validez...
-------------------------------------
800x600	résolution LxH
ASTUCE :
largeur		300	adapte pour valeur largeur
xhauteur		x400	adapte pour valeur hauteur
-------------------------------------
faites échap ou esc pour quitter"

txtERREUR="
est un répertoire.
usage : sélectionnez un ou plusieurs fichiers
ils seront réduits dans un sous dossier
du nom de la résolution"

txtPhotos_traitees="photos traitées : "



NB_PHOTOS=0

## }
## LOCALISATION

##Variables
dirdest=""

KA="800x600"
KB="1024x768"
KC="2048x1024"
KD="25%"
KE="50%"
KF="75%"

f_log=/dev/null
# f_log="/tmp/leuLog.txt"
# > "$f_log"

_quitter(){
	echo "quitter proprement"
	
	exit 0
}

les_arg="${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}"
# frm_infos --title="débugage" --text="ARG : ${les_arg}"

[ ${#les_arg} -eq 0 ] && {
	frm_error --text="dans Nautilus, donnez des images en argument"
	exit 65
	}

## On test si une des sélections est un dossier
old_IFS=$IFS
IFS=$'\n'
for un_element in ${les_arg}; do
	# frm_infos --title="débugage" --text=${un_element}
	if [ -d "${un_element}" ]; then
		## il faut sélectionner un ou plusieurs fichiers images
		## pas de dossier
		frm_error --text="${un_element} \n$txtERREUR"
		exit 12
	fi
	infoIMG=$(file -bi "${un_element}")
	## Nombre de photos (normalement !) basé sur type mime
	if [ "$infoIMG"="image"* ]; then
		((NB_PHOTOS++))
	fi
done

IFS=$old_IFS
# frm_infos --title="débugage" --text="Traitement des ${NB_PHOTOS} photos" --timeout "1"

lancement(){
	## dans le texte de la variable résolution 
	## remplacement des espaces éventuels par rien
	resolution="${resolution// /}"

	## ATTENTION
	## Avec la vue en arbre, crée le dossier dest. à la racine de l'arbre en cours

	## création du dossier de destination
	dirdest="$PWD/${resolution}"
	[ ! -d "${dirdest}" ] && mkdir "${dirdest}"

	## Début de la copie et conversion
	local old_IFS=$IFS
	local nbre=0
	IFS=$'\n'
	for arg in ${les_arg} ; do
		((nbre++))
		echo "#${base}\nimage	$nbre / ${NB_PHOTOS}"
		base="${arg##*/}"
		# echo -e "$arg\n\t${base}\n\t${resolution}\n\t${dirdest}" >> /tmp/leuLog.txt

		## Voir si le fichier de dest. n'existe pas déjà
		## si oui renomme l'ancien avec un nombre entre 
		## nom et extension
		[ -f "${dirdest}/${base}" ] && {
			nDouble=0
			while [ -f "${dirdest}/${base%.*}.${nDouble}.${base##*.}" ]
			do
				((nDouble++))
			done
			le_double="${base%.*}.${nDouble}.${base##*.}"
			mv "${dirdest}/${base}" "${dirdest}/${le_double}"
			}

		## TOUT SE PASSE ICI
		cp "${arg}" "${dirdest}/${base}"
		convert "${dirdest}/${base}" -resize ${resolution} "${dirdest}/${base}" ; 

		shift ## SUIVANT !!!
	done | zenity --progress --pulsate \
	--title="${nomLogiciel} - ${VERSION_LOGICIEL}" \
	--text="${txtPhotos_traitees} ${NB_PHOTOS}" --auto-close --auto-kill
	# Notification système
	# notify-send "${txtPhotos_traitees} ${NB_PHOTOS}" ;
	IFS=$old_IFS
}

choisir_resolution(){
	zenity --entry \
		--title="${txtLAQUESTION}" \
		--text="${NB_PHOTOS} photos trouvées\n${txtCOMPLEMENT}" \
		--entry-text="${KB}" "${KA}" "${KB}" "${KC}" "${KD}" "${KE}" "${KF}"
}
## Choix de la résolution ou du facteur de réduction
resolution=$(choisir_resolution) ;
[ $? -eq 0 ] && lancement

exit 0

Hors ligne