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 05/05/2016, à 22: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, à 22: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

En ligne

#3 Le 05/05/2016, à 22: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, à 22: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

En ligne

#5 Le 05/05/2016, à 23: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, à 23: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

En ligne

#7 Le 05/05/2016, à 23: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, à 23: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, à 23: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, à 23:43)


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#10 Le 05/05/2016, à 23: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 06/05/2016, à 00: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
1462493100.png
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, à 02:07)


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

Hors ligne

#12 Le 06/05/2016, à 06:56

bishop

Re : adaptation d'un script de reduction d'image pour nautilus

Salut polinux !

polinux a écrit :

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 ? roll


La plus grande surprise que puisse faire un con c'est de faire une pause.

Hors ligne

#13 Le 06/05/2016, à 07: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, à 07: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, à 07:53)


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

Hors ligne

#15 Le 06/05/2016, à 08: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, à 10: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 23.10   ❖  Xubuntu 22.10  ❖  Kubuntu 23.10   
         avec partition data commune       Une fraction de seconde                    Multiboot

Hors ligne

#17 Le 06/05/2016, à 13: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, à 17:36)


La plus grande surprise que puisse faire un con c'est de faire une pause.

Hors ligne

#18 Le 06/05/2016, à 23: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, à 01: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, à 05: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, à 07:09)

Hors ligne