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 17/05/2018, à 10:40

enebre

[Contourné] script pour thunar action HS ???

Bonjour,
J'utilise quelques petits scripts pour redimensionner les images via Thunar actions.

Le problème est qu'ils ne fonctionnent plus depuis quelques temps, en voici 1
Pourriez-vous svp, me dire ce qui ne va pas, merci à vous.
image redimension:

#!/bin/bash
 
DEST="./resized-1200"
mkdir -p $DEST
 
for file
    do
    if [ ! -e $file ]
        then
        continue
    fi
    to_name="$DEST/"$(echo $file | cut -f1 -d.)".jpg"
    convert -geometry $1x$1 -quality 95 -interlace line "${file}" "${to_name}"
done

Dernière modification par enebre (Le 17/05/2018, à 17:02)

Hors ligne

#2 Le 17/05/2018, à 11:00

michel_04

Re : [Contourné] script pour thunar action HS ???

Bonjour,

J'utilise ce script sous Xubuntu 16.04 et 18.04 (j'ai oublié où je l'ai trouvé..., sur le forum sans doute) depuis un moment pour redimentionner les images :

#!/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

A+

Hors ligne

#3 Le 17/05/2018, à 11:03

enebre

Re : [Contourné] script pour thunar action HS ???

merci michel_04,
L'essayer c'est l'adopter wink c'est fait.

Mais je me demande encore pourquoi , les miens ne fonctionnent plus.

Hors ligne

#4 Le 17/05/2018, à 11:10

enebre

Re : [Contourné] script pour thunar action HS ???

Bonjour golgoth63,

Merci pour ta participation.
Mes autres actions fonctionnent bien et le script de michel_04 est parfaitement opérationnel dans Thunar action, donc il me semble que le service action soit ok

Hors ligne

#5 Le 17/05/2018, à 11:50

enebre

Re : [Contourné] script pour thunar action HS ???

Devrais-je tenter de créer un fichier dans ce dossier ?
Par exemple : Desktop Action Scale
dans :

/usr/share/app-install/desktop/

avec en contenu, ce que tu donne plus haut
??

Hors ligne

#6 Le 17/05/2018, à 12:02

michel_04

Re : [Contourné] script pour thunar action HS ???

Re,

golgoth63 a écrit :

Faut voir avec un non troll. lol

Et de deux big_smile

A+

Dernière modification par michel_04 (Le 17/05/2018, à 12:03)

Hors ligne

#7 Le 17/05/2018, à 12:49

bluc

Re : [Contourné] script pour thunar action HS ???

Salut,

@enebre
Tes scripts ont l’autorisation d'etre exécutés ?...
Perso j'utilise des nautilus scripts depuis une dizaine d'années sur tous les environnements, a part Kde, et si les paquets nécessaires a leur fonctionnement sont toujours d'actualité , ils fonctionnent bien

J'utilise pour les images le même que Michel wink
on peut traiter des dossier complet en un clic

Dernière modification par bluc (Le 17/05/2018, à 12:56)


Clevo :  Ubuntu 23.10   ❖  Xubuntu 22.10  ❖  Kubuntu 23.10   
         avec partition data commune       Une fraction de seconde                    Multiboot

En ligne

#8 Le 17/05/2018, à 13:00

enebre

Re : [Contourné] script pour thunar action HS ???

Oui, tout ces scripts de redimensionnement ont la bonne autorisation, je m'en servais depuis des années sans soucis et là, il y a peut-être eu des changements du bash qui font que les commandes ne sont plus reconnues, c'est un mystère pour moi.
Connais-tu un moyen pour les lancer depuis le terminal, peut-être en créant un dossier test avec quelques images et ouvrir le terminal dans le dossier pour lancer le script, mais comment indiquer le fichier à transformer ?

edit:
je viens d'essayer ça et voici le retour

ombre@ombre:~$ sh /home/ombre/.config/Thunar/picture_resize-800 "/home/ombre/Images/dossier de travaille/apprentissage1.jpg" "/home/ombre/Images/dossier de travaille/apprentissage-01.jpg"
/home/ombre/.config/Thunar/picture_resize-800: 8: [: /home/ombre/Images/dossier: unexpected operator
convert-im6.q16: invalid argument for option `-geometry': /home/ombre/Images/dossier @ error/convert.c/ConvertImageCommand/1704.
/home/ombre/.config/Thunar/picture_resize-800: 8: [: /home/ombre/Images/dossier: unexpected operator
convert-im6.q16: invalid argument for option `-geometry': /home/ombre/Images/dossier @ error/convert.c/ConvertImageCommand/1704.
ombre@ombre:~$ 

le script:

#!/bin/bash
 
DEST="./resized-800"
mkdir -p $DEST
 
for file
    do
    if [ ! -e $file ]
        then
        continue
    fi
    to_name="$DEST/"$(echo $file | cut -f1 -d.)".jpg"
    convert -geometry $1x$1 -quality 95 -interlace line "${file}" "${to_name}"
done

Dernière modification par enebre (Le 17/05/2018, à 13:07)

Hors ligne

#9 Le 17/05/2018, à 13:13

bluc

Re : [Contourné] script pour thunar action HS ???

Ton script chez moi créer un dossier resized-800 vide
je ne m'y connait pas assez pour te dire ce qui ne va pas

Dernière modification par bluc (Le 17/05/2018, à 13:15)


Clevo :  Ubuntu 23.10   ❖  Xubuntu 22.10  ❖  Kubuntu 23.10   
         avec partition data commune       Une fraction de seconde                    Multiboot

En ligne

#10 Le 17/05/2018, à 13:17

enebre

Re : [Contourné] script pour thunar action HS ???

c'est pareil chez moi. sad

edit:
pour le script de michel_4 cfr:#2 j'ai ajouté -strip et -interlace line
-strip = supprime toutes les métadonnées (données EXIF)
-interlace line = permet de créer un JPEG progressif, afin d’améliorer l’expérience utilisateur.

ligne 127 du script

convert -strip -interlace line -quality 80 -resize $imgsize

et la ligne 67 pour avoir le format 1024 par défaut et le tableau en entier

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" TRUE "1024x768" FALSE "1728x1296" FALSE "2592x1944" --height=410`

Dernière modification par enebre (Le 17/05/2018, à 15:19)

Hors ligne

#11 Le 17/05/2018, à 20:29

bluc

Re : [Contourné] script pour thunar action HS ???

Tiens je ne connaissais pas cette histoire de jpeg progressif.... merci enebre
je viens de voir la différence en cliquant ici

source

Dernière modification par bluc (Le 17/05/2018, à 20:32)


Clevo :  Ubuntu 23.10   ❖  Xubuntu 22.10  ❖  Kubuntu 23.10   
         avec partition data commune       Une fraction de seconde                    Multiboot

En ligne

#12 Le 17/05/2018, à 22:16

le-peyo

Re : [Contourné] script pour thunar action HS ???

¡ Holà !

Pour redimensionner j'utilise le script Image-Resize (fourni avec Voyager 14.04) :

#!/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 executable
# - 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
# - Paramatrage d'une largeur et d'une hauteur maxi à ne pas dépasser, tout en conservant le ratio.
# - Paramatrage de la qualité de compression
# - Choix de la sortie (Ecrasement, 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 a été choisi
if [ $# -eq 0 ]; then
	zenity --error --title="image-redim" --text="Vous devez selectionner 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électionner, conserve le ratio, dimensions max à ne pas dépasser (pixels)" --column="" "choisir..." "640x480" "800x600" "1024x768" "1280x1024" "1680x1050" "1920x1200" --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, choisir, saisie de la largeur
if [ "$v_dimensions_max" = "choisir..." ] ; then

	# On force la saisie
	while [ ! "$v_largeur_max" ]; do

		# Saisie de la largeur 
		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
		v_hauteur_max=`zenity --entry --title="image-redim" --text="Saisissez une hauteur"`

		# 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 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\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="choisir 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éléctionnés, images ou non
v_total=`file $* | wc -l`

# Compteur pour barre de progression
v_compteur=0
v_pourcentage=0



# Boucle sur les fichiers séléctionné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 Ecrasement 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."

Simple, efficace... et il permet aussi de choisir le taux de compression de l'image redimensionnée (pour le jpeg progressive il faudra faire des modifications). L'image de sortie est renommée ou alors elle écrase l'originale, c'est au choix.

Dans les conditions d'apparition de Thunar il faut choisir "Fichiers Image" et un menu apparaîtra en faisant un clic droit sur une (ou plusieurs ) photo(s).

À plus.


Sous Linux depuis 2009 | Xubuntu 22.04 LTS | Lenovo Thinkpad W540
Windows... ? J'connais pas...
Petits scripts vidéos bien pratiques =>
C'est le moment : OMS et Institut Pasteur !

Hors ligne

#13 Le 17/05/2018, à 22:42

metalux

Re : [Contourné] script pour thunar action HS ???

Bonsoir,
je vois:

/home/ombre/.config/Thunar/picture_resize-800: 8: [: /home/ombre/Images/dossier: unexpected operator
    if [ ! -e $file ]

remplace par

    if [ ! -e "$file" ]

et peut-être à protéger $file avec des doubles-quotes également dans cette ligne:

    to_name="$DEST/"$(echo "$file" | cut -f1 -d.)".jpg"

Si ça ne fonctionne pas, remplace les crochets simples par des doubles comme le shebang est #!/bin/bash:

    if [[ ! -e "$file" ]]

Je n'ai pas testé mais c'est ce qui pourrait expliquer pourquoi ça bloque.

Hors ligne

#14 Le 17/05/2018, à 23:34

enebre

Re : [Contourné] script pour thunar action HS ???

Hola ! Merci le-peyo pour le script complet de Julien Leloup venant du génial Voyager que beaucoup regrette le départ "forcé" du forum, je l'essaye demain.

Merci metalux pour tes explications expertes, pareil je teste demain et donnerai le retour.

Hors ligne

#15 Le 18/05/2018, à 07:46

enebre

Re : [Contourné] script pour thunar action HS ???

Hola ! le-peyo , ben voila je l'ai testé, mais je préfère l'usage du script donné par michel_04, il permet de forcer le redimensionnement de l'image à une taille supérieure à l'origine.
Merci quand même wink

Bonjour metalux, j'ai essayé les différentes options, le dossier reste désespérément vide.

Hors ligne

#16 Le 18/05/2018, à 08:53

michel_04

Re : [Contourné] script pour thunar action HS ???

Bonjour,

Il me semble que j'avais vu ce script sur Custom Actions.

Au fait, la ligne 134 :

(gnome-open "`dirname \"${selection[0]}\"`/$himgsize") &

Devient pour Xubuntu :

(thunar "`dirname \"${selection[0]}\"`/$himgsize") &

Ce qui lance Thunar dans le répertoire créé.

Edit : J'avais collé dans mon message la version originale (sans la modif ligne 134).

A+

Dernière modification par michel_04 (Le 18/05/2018, à 09:02)

Hors ligne