#1 Le 05/05/2016, à 21:20
- polinux
adaptation d'un script de reduction d'image pour nautilus
Bonjour,
j'utilisais un script de réduction d'image très pratique et rapide pour mes sites internet mais sur les versions récentes d'ubuntu impossible de l'installer et de l'utiliser.
Je le plaçais dans .gnome > script et après je l'appelais par un clique droit script et ca roulait tout seul.
j'aimerai me remettre à jour et l'utiliser à nouveau sur ma 15.04.
voici le script :
#!/usr/bin/env python
# -*- coding: latin-1 -*-
# Version adaptée à Nautilus
# Appel système (system,mkdir)
import os
# Manipulation des arborescences (join,isdirr)
import os.path
# Pour sortir de l'interpréteur
import sys
import commands
import urllib
# Mise en place des constantes
RepertoireVignette="Vignettes"
Debug=0
def nautilus_script_display_error():
"""This is a general error message display for nautilus scripts"""
import sys
#errors_fd,errors_name=tempfile.mkstemp() #This not available until python 2.3
errors_name=os.tmpnam()
errors_fd=file(errors_name,"w")
etype, emsg, etb = sys.exc_info()
errors_fd.write('line '+str(etb.tb_lineno)+': '+str(etype)+': '+str(emsg)+'\n')
errors_fd.write('\n$PWD: %s' % os.getcwd())
errors_fd.write('\nsys.argv: %s' % str(sys.argv[1:]))
for var in os.environ:
if var.startswith("NAUTILUS_"):
errors_fd.write("\n%s: %s" % (var,os.environ[var].replace('\n',"\\n")))
errors_fd.close()
pid = os.fork()
if pid == 0:
cmd = ["zenity", "--text-info", "--filename=%s" % errors_name, "--title=error", "--width=640", "--height=220"]
os.execvp(cmd[0],cmd)
os.waitpid(pid,0)
os.unlink(errors_name)
if __name__=='__main__':
try:
# Récupération du répertoire courant
Repertoire=os.environ["NAUTILUS_SCRIPT_CURRENT_URI"][7:]
# On se déplace dans ce répertoire
os.chdir(urllib.unquote(Repertoire))
# On vérifie qu'il existe un répertoire de vignette
if not os.path.isdir(RepertoireVignette):
os.mkdir(RepertoireVignette)
# Choix de la taille de réduction
StringCommand='zenity --title "test" --list --radiolist --column "" --column "Taille" FALSE "800x600" TRUE "640x480" FALSE "320x240" FALSE "150x113"'
Resolution=commands.getoutput(StringCommand)
if Debug :
# Ouverture d'un fichier pour le déboguage
FileID=file('log.txt','w')
FileID.write(Repertoire+"\n")
# Récupération des fichiers
for Fichier in os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'].split("\n")[0:-1]:
# Nouveau nom de fichier
Path,FileName=os.path.split(Fichier)
#FileID.write(Path +" "+FileName+"\n")
NouveauNom=os.path.join(os.path.join(Path,RepertoireVignette),FileName)
if Debug :
FileID.write("Traitement de "+NouveauNom+"\n")
FileID.write("convert -resize "+Resolution+" '"+Fichier+"' '"+NouveauNom+"'"+"\n")
os.system("convert -resize "+Resolution+" '"+Fichier+"' '"+NouveauNom+"'")
if Debug :
FileID.close()
os.system("zenity --text-info --filename=/home/enzo/tmp/test/log.txt")
os.system("zenity --info --text='Réduction terminée'")
except :
nautilus_script_display_error()
si cela vous dit quelque chose je suis preneur d'un petit conseil pour son installation
merci d'avance
Hors ligne
#2 Le 05/05/2016, à 21:28
- cqfd93
Re : adaptation d'un script de reduction d'image pour nautilus
Bonjour,
Tu peux placer les scripts nautilus dans ~/.local/share/nautilus/scripts.
− cqfd93 −
Hors ligne
#3 Le 05/05/2016, à 21:42
- polinux
Re : adaptation d'un script de reduction d'image pour nautilus
Merci pour ta réponse,
je viens de le faire mais mon script n’apparaît pas.
Habituellement je cliquais droit et dans la liste qui s'ouvrait il y avait le choix script et mon script vignette
mais là rien de tout cela.
le script est peut être à modifier dans le chemin d'accès ?
Hors ligne
#4 Le 05/05/2016, à 21:51
- cqfd93
Re : adaptation d'un script de reduction d'image pour nautilus
C'est le premier script que tu mets dans ce dossier ? Il faut peut-être installer nautilus-script-manager ?
− cqfd93 −
Hors ligne
#5 Le 05/05/2016, à 22:19
- polinux
Re : adaptation d'un script de reduction d'image pour nautilus
en effet c'était le premier script que je mettais dans le dossier
j'ai donc installé nautilus script manager,
j'ai bien mis les permission pour mon script
l'option script apparaît donc avec comme choix "vignette" mon script mais lorsque je valide mon choix de taille le dossier vignette se crée mais la nouvelle image ne se crée pas
Hors ligne
#6 Le 05/05/2016, à 22:34
- cqfd93
Re : adaptation d'un script de reduction d'image pour nautilus
Là je ne vais pas t'être d'un grand secours.
− cqfd93 −
Hors ligne
#7 Le 05/05/2016, à 22:35
- soshy
Re : adaptation d'un script de reduction d'image pour nautilus
Salut,
il faut aussi avoir le paquet imagemagick d'installé.
Hors ligne
#8 Le 05/05/2016, à 22:40
- polinux
Re : adaptation d'un script de reduction d'image pour nautilus
merci pour cette première aide cqfd93
J'ai bien les paquets imagemagick d'installé sauf le paquet .dbg et doc
Hors ligne
#9 Le 05/05/2016, à 22:41
- moko138
Re : adaptation d'un script de reduction d'image pour nautilus
Et la 15.04 n'est plus maintenue.
- -
Par ailleurs, tu peux contacter willcoyote, qui est familier des scripts de traitement d'images dans nautilus.
Dernière modification par moko138 (Le 05/05/2016, à 22:43)
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#10 Le 05/05/2016, à 22:47
- polinux
Re : adaptation d'un script de reduction d'image pour nautilus
ok c'est un vieux pc et je ne voulais pas passer aux versions supérieures mais je vais peut être y songer.
Je note pour willcoyote mais en attendant je vais continuer de bosser sur ce problème,
merci à toi
Hors ligne
#11 Le 05/05/2016, à 23:58
- bluc
Re : adaptation d'un script de reduction d'image pour nautilus
Salut,
J'utilise ce script trouvé sur ce forum, je crois , je le nomme "Réduction Image" je le rend exécutable je le place effectivement dans ~/.local/share/nautilus/scripts
il faut bien sur installer imagemagick , zenity
Donc clic droit sur l'image ou un dossier d'images >> Scripts >> réduction image et cette fenetre apparait
Sur Lubuntu l'utiliser avec les "Actions nautilus " , sur Xfce avec les "Actions Thunar" avec l'avantage de n'apparaitre que sur les fichiers images
J'utilise de même un autre script pour convertir en jpeg ou un autre pour envoyer un fichier en ftp
#!/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 "160x120" 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
Dernière modification par bluc (Le 06/05/2016, à 01:07)
Clevo : Ubuntu 24.04 ❖ Xubuntu 24.04 ❖ Kubuntu 23.10
avec partition data commune Une fraction de seconde Multiboot
Hors ligne
#12 Le 06/05/2016, à 05:56
- bishop
Re : adaptation d'un script de reduction d'image pour nautilus
Salut polinux !
en effet c'était le premier script que je mettais dans le dossier
j'ai donc installé nautilus script manager,
j'ai bien mis les permission pour mon script
l'option script apparaît donc avec comme choix "vignette" mon script mais lorsque je valide mon choix de taille le dossier vignette se crée mais la nouvelle image ne se crée pas
Tu as bien coché la case pour rendre ton script exécutable ?
La plus grande surprise que puisse faire un con c'est de faire une pause.
Hors ligne
#13 Le 06/05/2016, à 06:38
- polinux
Re : adaptation d'un script de reduction d'image pour nautilus
bonjour bishop et bluc,
oui j'ai bien coché la case dans les permissions qui permet d'executer le fichier comme un programme !
c'est bien de cela dont tu parles ?
J'ai bien zenity et imagemagick, comme tu utilises le même script as tu comparé avec le mien n'y a t'il pas une erreur dans mon code ?
Hors ligne
#14 Le 06/05/2016, à 06:52
- bluc
Re : adaptation d'un script de reduction d'image pour nautilus
Alors la pour le code , je vois la différence avec le Chinois mais ça me parle autant.
J'ai trouvé celui-la qui fonctionne , je lui ai simplement ajouter une autre taille et mis du Français pour la fenêtre du choix de la taille c'est tout ce que je peux faire
Dernière modification par bluc (Le 06/05/2016, à 06:53)
Clevo : Ubuntu 24.04 ❖ Xubuntu 24.04 ❖ Kubuntu 23.10
avec partition data commune Une fraction de seconde Multiboot
Hors ligne
#15 Le 06/05/2016, à 07:06
- polinux
Re : adaptation d'un script de reduction d'image pour nautilus
ok, peux tu mettre le code au pire je créerai un nouveau script
merci d'avance et bonne journée
Hors ligne
#16 Le 06/05/2016, à 09:23
- bluc
Re : adaptation d'un script de reduction d'image pour nautilus
Ben ... le script , c'est celui que j'ai mis plus haut
Clevo : Ubuntu 24.04 ❖ Xubuntu 24.04 ❖ Kubuntu 23.10
avec partition data commune Une fraction de seconde Multiboot
Hors ligne
#17 Le 06/05/2016, à 12:28
- bishop
Re : adaptation d'un script de reduction d'image pour nautilus
En ce qui me concerne j'utilise des scripts très dépouillés mais qui font très bien ce qu'on leur demande.
IMG redimensionner
#!/bin/bash
#Quelles que soient les dimensions choisies pour le redimensionnement de l'image
#la proportion <largeur>x<hauteur> est conservée.
#Une seule des deux valeurs que vous aurez choisi
#pour le redimensionnement de l'image sera conservée.
title="Redimensionner une image"
scale="<largeur>x<hauteur> | exemple: 500x300"
case $LANG in
en* )
title="Scale image"
scale="Size wide <length> x <height>";;
esac
imgsize=`gdialog --title "$title" --inputbox "$scale" 200 100 2>&1`
while [ $# -gt 0 ]; do
picture=$1
/usr/bin/convert -scale $imgsize "$picture" "$imgsize-$picture"
shift
done
if [ $? -eq 1 ];then exit; fi;
IMG Redimensionner selon valeurs
#!/bin/bash
title="Redimensionnement fixe d'une image"
scale="Choisir une dimension"
case $LANG in
en* )
title="scale image"
scale="Choose a size";;
esac
imgsize=`gdialog --title "$title" --checklist "$scale" 200 100 6 1600x1200 " " off 1400x1050 " " off 1280x1024 " " off 1024x768 " " off 800x600 " " off 640x480 " " off 512x512 " " off 256x256 " " off 128x128 " " off 2>&1`
while [ $# -gt 0 ]; do
picture=$1
for i in $imgsize; do
i=`echo $i | sed 's/"//g'`
/usr/bin/convert -scale $i "$picture" "$i-$picture"
done
shift
done
if [ $? -eq 1 ];then exit; fi;
Dernière modification par bishop (Le 06/05/2016, à 16:36)
La plus grande surprise que puisse faire un con c'est de faire une pause.
Hors ligne
#18 Le 06/05/2016, à 22:05
- polinux
Re : adaptation d'un script de reduction d'image pour nautilus
je vous remercie pour toutes ces propositions qui seront certainement la solution à terme,
mais dans un souci de compréhension et aussi avec un esprit de challenge j'aimerai bien refaire fonctionner ce script.
tout ce passe bien jusqu'au moment de vérifier si l'image réduite est dans le dossier vignettes et là non rien pas de photo.
Hors ligne
#19 Le 08/05/2016, à 00:13
- polinux
Re : adaptation d'un script de reduction d'image pour nautilus
j'ai installé le script de bluc et il fonctionne du premier coup, c'est donc mon script qui comporte une erreur.
si quelqu'un est capable de relire le code c'est sûrement là que ce trouve la clé du problème.
Hors ligne
#20 Le 08/05/2016, à 04:18
- MicP
Re : adaptation d'un script de reduction d'image pour nautilus
# -*- coding: latin-1 -*-
Le fait que tu ais spécifié latin-1 doit sans doute dépendre des "locales" utilisées par ton système,
mais peut-être qu'avec :
#-*- coding:utf-8 -*-
Tu peux vérifier l'encodage utilisé par ton système en entrant simlerment la commande :
locale
Dernière modification par MicP (Le 08/05/2016, à 06:09)
Hors ligne