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 22/05/2018, à 14:07

JPHD

GIMP 2 - scripts pour réduire la taille de plusieurs images

Bonjour à tous,

J'utilise GIMP quotidiennement pour mon travail, et j'aurais besoin d'un script pour gagner un temps très précieux. Voici l'idée.

Il faut que je puisse rapidement réduire la taille de plusieurs images (de préférence en même temps, du coup), afin que les fichiers soient tous d'une taille inférieure ou égale à 90 ko. J'avais pensé réduire automatiquement la taille de l'image à 640 de large, la hauteur s'ajustant automatiquement ; la résolution réglée à 72 dpi ; l'export en .jpg qualité 50/100.

Est-ce qu'un tel script existe et où puis-je le trouver ? Si non, est-ce qu'il est existe une équipe ou un service à qui je pourrais "commander" ce script ? Je peux tenter de le faire, mais je pars quasiment de zéro et les quelques essais que j'ai réalisés n'ont jamais fonctionné...

Merci d'avance pour vos réponses.

JPH

Hors ligne

#2 Le 22/05/2018, à 15:42

inbox

Re : GIMP 2 - scripts pour réduire la taille de plusieurs images

Salut,

Plutôt que d'utiliser Gimp, tu peux utiliser ImageMagick.

Pour ces opérations courantes, il existe deux scripts installables depuis les dépôts. Cette commande fait cette action :

sudo apt install nautilus-image-converter nautilus-image-manipulator

Les deux scripts permettent des actions légèrement différentes. Tu peux traiter un lot d'images d'une fois.

Ces scripts ne permettent pas de définir un poids final (ex : 90 Ko).

A+


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#3 Le 22/05/2018, à 17:30

bluc

Re : GIMP 2 - scripts pour réduire la taille de plusieurs images

Ce nautilus script trouvé sur ce forum il y a quelques années est génial
Un clic droit sur une image ou un dossier d'image ouvre cette fenêtre et réduit a la taille souhaitée des lots d'images
script.png

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

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

Hors ligne

#4 Le 23/05/2018, à 08:59

JPHD

Re : GIMP 2 - scripts pour réduire la taille de plusieurs images

Merci pour vos réponses mais je travaille sous Windows -_-" (c'est imposé par mon entreprise. A la maison je suis sous Linux).

Hors ligne

#5 Le 23/05/2018, à 10:01

inbox

Re : GIMP 2 - scripts pour réduire la taille de plusieurs images

Si tu cherches des infos pour Windows, tu t'es un peu trompé de forum...


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#6 Le 23/05/2018, à 10:46

nam1962

Re : GIMP 2 - scripts pour réduire la taille de plusieurs images

Il y a imagemagick : http://www.imagemagick.org/script/index.php
Normalement tu pourras l'utiliser au bureau et à la maison.
https://doc.ubuntu-fr.org/imagemagick

Dernière modification par nam1962 (Le 23/05/2018, à 10:48)


[ Modéré ]

Hors ligne

#7 Le 01/06/2018, à 11:30

JPHD

Re : GIMP 2 - scripts pour réduire la taille de plusieurs images

inbox a écrit :

Si tu cherches des infos pour Windows, tu t'es un peu trompé de forum...

Il y a tellement de forums sur le net qui concernent Gimp que je ne savais pas lequel était vraiment fiable. Forum Ubuntu étant une valeur sûre...
Je vais regarder Imagemagick. Merci !

Hors ligne