92 votes

Gimp : Exportez chaque calque en tant qu'image PNG séparée

Je suis confronté à une situation où j'ai une image dans Gimp avec plusieurs calques. Maintenant, je veux exporter chaque calque individuellement en tant qu'image (de préférence au format PNG) automatiquement vers un dossier quelque part.

Est-ce possible?

La méthode longue : Masquer tous les calques sauf un, recadrer la section souhaitée, exporter l'image. Masquer le calque enregistré, afficher un autre, recadrer la section, exporter. Répéter. Un peu fastidieux pour une image avec environ 20 calques.

6voto

Je pense que vous pouvez essayer de trouver quelque chose avec ImageMagick : apt-get install imagemagick. Il semble pouvoir gérer le format XCF et vous pouvez exporter un calque en png en utilisant un [N] dans la commande, où N est le niveau de votre calque.

Source : http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=17603

ImageMagick Read Mods : http://www.imagemagick.org/Usage/files/#read_mods

4voto

FeRD Points 157

La meilleure chose à propos de la réponse de ThorSummoner est qu'elle a attiré l'attention sur le plugin d'exportation OpenRaster, qui se trouve en réalité dans le fichier file-openraster.py dans l'installation de GIMP.

En lisant son code (et avec un peu d'aide du navigateur de procédures intégré), j'ai pu déterminer que les calques d'un XCF de GIMP peuvent être enregistrés dans des PNG individuels en allant dans Filtres > Python-fu > Console dans l'interface, et en entrant le code suivant dans l'interpréteur Python intégré :

import os

# Si vous avez plusieurs images ouvertes, vous devrez peut-être ajuster
img = gimp.image_list()[0]

savefn = gimp.pdb['file-png-save-defaults']
outpath = "/home/$USER/Pictures" # (ou r"C:\Users\$USER\Pictures", etc)

for lay in img.layers:
    # Même si vos noms de calques contiennent des espaces, aucun problème
    outname = lay.name + ".png"
    savefn(img, lay, os.path.join(outpath, outname), outname)

    # tapez une ligne supplémentaire pour sortir du bloc indenté

Vous verrez la barre de progression dans la barre d'état de la fenêtre d'image commencer à parcourir tous vos calques, en écrivant chacun dans un fichier PNG portant le même nom, dans le répertoire que vous avez spécifié comme outpath. (Qui doit déjà exister, sinon ajoutez un os.makedirs(outpath, exist_ok=True) avant la boucle.)

Si certains de vos noms de calques sont les mêmes, c'est un problème, car cela écrasera joyeusement les fichiers déjà écrits. Attention à GIMPtor.

Éditer : Si vous avez des calques portant le même nom, vous pourriez facilement ignorer les noms et plutôt écrire les calques dans des fichiers numérotés. Remplacez simplement la boucle finale ci-dessus par quelque chose comme :

for n, lay in enumerate(img.layers):
    outname = f"Calque {n:03}.png"
    savefn(img, lay, os.path.join(outpath, outname), outname)

Cela écrira les calques dans des fichiers PNG nommés "Calque 000.png" à "Calque 999.png" (ou autant de calques sont présents, si moins de 1000).

Si la version de Python de Gimp ne supporte pas les f-strings (Python 3.6+), ceci est exactement équivalent :

outname = "Calque {0:03}.png".format(n)

1voto

user985366 Points 414

J'ai fait la même chose et j'ai essayé de télécharger les plugins mentionnés dans les réponses. Comme le site web de Gimp est actuellement indisponible, je n'ai pas pu obtenir les plugins et j'ai dû trouver une autre solution.

Ce que j'ai fini par faire, c'est d'utiliser le logiciel de capture d'écran Shutter, qui vous permet de sélectionner une région de l'écran, puis vous pouvez refaire la même capture d'écran de cette région en un seul clic. Ainsi, il devient une opération de 2 clics par calque : cacher le calque, capturer l'écran, masquer le calque suivant, capturer l'écran, ...

Beaucoup plus rapide que tout ce que j'aurais pu imaginer, et prend moins d'une minute pour 20 calques. Vous pouvez perdre en qualité d'image, bien que dans mon cas ce n'était pas un problème.

1voto

abetusk Points 111

De nombreuses années plus tard, GIMP a supprimé la fonctionnalité de la solution acceptée et certaines des autres solutions de code ont succombé à la pourriture du code (je ne peux pas exécuter l'exportateur GIMP avec Python3).

Comme c'est l'un des premiers résultats de Google lorsque l'on demande comment exporter des calques de GIMP vers leurs propres fichiers PNG, je me sens obligé de fournir une réponse mise à jour.

J'utilise GIMP 2.10.18.

Voici une solution qui a fonctionné pour moi :

  • Exportez le fichier XCF en PDF (Fichier -> Exporter sous) en gardant à l'esprit ce qui suit :
    • Assurez-vous de sélectionner Calques en tant que pages (calques inférieurs d'abord)
    • Assurez-vous de dé-sélectionner Appliquer les masques de calque avant l'enregistrement
    • Assurez-vous de dé-sélectionner Convertir les bitmaps en graphiques vectoriels lorsque c'est possible
    • Assurez-vous de dé-sélectionner Omettre les calques cachés et les calques avec une opacité nulle
  • Utilisez l'outil en ligne de commande pdftoppm pour exporter en fichiers PNG.

Par exemple, si vous deviez exporter le fichier XCF en tant que fichier calques_exportés.pdf, cela créera chaque calque comme son propre image PNG avec le préfixe out_ (par exemple, out_01.png, out_01.png, etc.) :

pdftoppm -png -r 300 calques_exportés.pdf out_

L'option -r est la résolution et apparemment elle devrait correspondre à la résolution par défaut définie dans GIMP lors de l'exportation vers des fichiers PDF. J'ai constaté que 300 maintenait la résolution dans les calques de mon fichier XCF d'origine, mais votre expérience peut varier.

Sous Ubuntu, on peut installer pdftoppm en émettant la commande :

apt-get install poppler-utils

1voto

Matthias Points 11

Exportez tous les cadres de Gimp en tant que MNG, puis utilisez ImageMagick pour les séparer en PNG.

convert cadres.mng cadre.png

ImageMagick ajoute des numéros à chaque nom de fichier (si vous ne formatez pas la chaîne) comme "cadre-1.png" et ainsi de suite.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X