Logiciel gratuit pour rogner une image à ras bord du motif
alarache -
Bonjour,
je recherche un logiciel qui, lorsque l'on y charge une image ayant une bordure blanche, rogne celle-ci à ras bord du motif.
J'ai trouvé celui-ci :
"https://www.deleze.name/marcel/photo/transfim/rogne/recadre.html".
Il n'est pas mal mais il ne fonctionne pas toujours car j'ai chargé plusieurs images qui n'ont pas été rognées jusqu'au ras bord du motif, c'est dommage.
En connaîtriez-vous d'autres du même genre ?
Je vous remercie par avance pour votre aide.
J.
- Rogner une image en ligne
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Légender une image - Guide
- Image iso - Guide
- Formulaire en ligne de meta - Guide
3 réponses
Salut,
Quelle coincidence je viens juste de rogner sur mon Pc une photo avec simplement la galerie de photo, en haut la fonction ROGNER
Personne n'a d'idée ?
P.S. : pourquoi le sujet a été déplacé dans la catégorie "Graphisme" ?
C'est un logiciel que je recherche...
Salut,
Si tu as python 3 installé sur ton système, sinon installe-le installe aussi pillow :P
Puis lance ce petit script maison, il s'appuie sur la couleur la plus commune des pixels du pourtour de l'image pour déterminer la couleur du fond de l'image.
try: from PIL import Image except ImportError: print('Ce script nécessite pillow !', '\n') exit( 'Installez-le avec la commande :' ' « python -m pip install pillow »' ) class ImageReframe: def __init__(self, image): self._image = image frame_color = self._get_most_common_color() self._coords = dict( top=self._get_top(frame_color), bottom=self._get_bottom(frame_color), left=self._get_left(frame_color), right=self._get_right(frame_color), ) # left, top, right, bottom self._new_image = self._image.crop( ( self._coords['left'], self._coords['top'], self._coords['right'], self._coords['bottom'] ) ) def __call__(self): return self._new_image def _get_most_common_color(self): colors = {} for y in (0, self._image.height - 1): for x in range(self._image.width): color = self._image.getpixel((x, y)) try: colors[color] += 1 except KeyError: colors[color] = 1 for x in (0, self._image.width - 1): for y in range(self._image.height): color = self._image.getpixel((x, y)) try: colors[color] += 1 except KeyError: colors[color] = 1 return max(colors, key=lambda v: v[1]) def _get_top(self, color): for y in range(self._image.height): for x in range(self._image.width): if self._image.getpixel((x, y)) != color: return max(0, y - 1) def _get_bottom(self, color): for y in range(self._image.height - 1, -1, -1): for x in range(self._image.width): if self._image.getpixel((x, y)) != color: return min(self._image.height - 1, y + 1) def _get_left(self, color): for x in range(self._image.width): for y in range(self._image.height): if self._image.getpixel((x, y)) != color: return max(0, x - 1) def _get_right(self, color): for x in range(self._image.width - 1, -1, -1): for y in range(self._image.height): if self._image.getpixel((x, y)) != color: return min(self._image.width - 1, x + 1) if __name__ == '__main__': import os import argparse import mimetypes images_mimes = ( 'image/bmp', 'image/gif', 'image/jpeg', 'image/png', 'image/webp', ) HELP = f''' PROGRAMME DE ROGNAGES D'IMAGES formats d'images supportés : { ', '.join(mime.split('/')[1] for mime in images_mimes) } ============================== --help -h : affiche cette aide. ============================== Rognage d'une image simple : --image -i : chemin vers l'image --new -n : chemin où enregistrer l'image recadrée si non stipulée, la nouvelle image sera affichée ============================== Rognages des images d'un répertoire : --fromdir -fd : chemin vers le répertoire des images à rogner --savedir -sd : chemin vers le répertoire des images rognées à enregistrer ''' parser = argparse.ArgumentParser() parser.add_argument('--image', '-i', type=str, action='store') parser.add_argument('--new', '-n', type=str, action='store') parser.add_argument('--fromdir', '-fd', type=str, action='store') parser.add_argument('--savedir', '-sd', type=str, action='store') try: args = parser.parse_args() except ValueError as e: exit(e) if args.image: if args.dir or args.save_dir: print( "[ATTENTION] seul --new peut être stipulé si --image" "l'est." ) if not os.path.exists(args.image): exit(f"[ERREUR] L'image {args.image} n'existe pas.") if args.new: if os.path.exists(args.new): exit( f"[ERREUR] Le fichier {args.new} existe déjà, ne" " peut l'écraser." ) else: image = Image.open(args.image) new = ImageReframe(image)() new.save(args.new) else: image = Image.open(args.image) new = ImageReframe(image)() new.show() elif args.fromdir and args.savedir: if not os.path.isdir(args.fromdir): exit( f"[ERREUR] Le répertoire {args.fromdir} n'existe pas" " ou n'est pas un répertoire." ) if not os.path.isdir(args.savedir): exit( f"[ERREUR] Le répertoire {args.savedir} n'existe pas" " ou n'est pas un répertoire." ) for fyle in os.listdir(args.fromdir): if mimetypes.guess_type(fyle)[0] in images_mimes: image = Image.open(f'{args.fromdir}/{fyle}') new = ImageReframe(image)() filename = os.path.basename(fyle) new.save(f'{args.savedir}/{filename}') print(filename, 'recadré et enregistré.') else: print(HELP.strip())
Enregistre ce code dans un fichier rogner.py
Puis pour l'exécuter :
python rogner_image.py -i chenim_vers_image
Affichera directement l'image modifiée sans l'enregistrer.
Par exemple :
python rogner_image.py -i /home/bibi/images/dog.png
---
python rogner_image.py -i chenim_vers_image -n chemin_destination_image_rognée
Enregistrera l'image rognée vers la destination.
par exemple :
python rogner_image.py -i /home/bibi/images/dog.png -n /home/bibi/dog_2.png
---
python rogner_image.py -fd chemin_répertoire_source -sd chemin_répertoire_destination
Rognera chaque images de la source et l'enregistrera dans la destination
Par exemple :
python rogner_image.py -fd /home/bibi/images/animaux -sd /home/bibi/images/animaux_nouveaux
ATTENTION, dans ce cas, aucune vérification n'est faite sur l'écrasement de fichiers existants dans le répertoire de destination (la flemme :D )