Question

Voici mon problème.

LE CONTEXTE

Je construis un système entier pour gérer le traitement des images dans mon entreprise. Nous traitons .psd et .cr2 Fichier faisant beaucoup d'opérations différentes (comme Développer .Cr2 Fichier modifiant l'architecture d'image de construction d'exposition avec couche et ainsi de suite)
Comme nous sommes très jeunes (==> très petits avec un budget limité), nous n'avons pas d'ordinateur dédié au traitement d'image. Mais nous avons encore besoin de beaucoup de traitement. Alors ce que j'ai fait, c'est:
J'ai mis en place un NAS, puis j'ai installé un peu .as3 Deamon sur les 3 ordinateurs de l'entreprise qui ont un Photoshop (j'ai juste réussi à le faire dans .As3 qui est dommage que je connais.
Ce programme utilise la toute nouvelle "connexion distante" dans CS5.1 pour contrôler Photoshop. Fondamentalement, le programme vérifie simplement une file d'attente s'il a du travail à faire et si c'est le cas transmet l'ordre à Photoshop à l'aide d'un fichier .jsx.
À la fin, lorsque nous voulons utiliser un Photoshop sur un ordinateur, nous arrêtons simplement que Deamon utilise Photoshop, puis réactivons-le si nous avons besoin d'un traitement.

PROBLÈME

Cela fonctionne bien pour l'instant, mais j'ai un gros problème: il est difficile de mettre à l'échelle ce système pour la raison financière ==> Photoshop n'est pas gratuit! C'est un problème car l'évolutivité était un objectif ...

Mon idée est donc d'utiliser GIMP de la même manière. Tout nouvel ordinateur de l'entreprise aurait installé GIMP et un peu de programme Python / C ++ / quel que soit le contrôle.

QUESTION

Sauf le fait que GIMP 2.6 (2.8 !!!) a toujours un manque de prise en charge pour l'ensemble des couches, j'ai eu du mal à établir une connexion à socket simple avec!
Comment un programme peut-il envoyer à GIMP un script Python pour traiter les images?

Était-ce utile?

La solution

Cela peut être fait et ce n'est pas difficile à faire. Ce qui peut et ne peut pas être fait à partir de GIMP peut être vu en vérifiant l'API de script de GIMP <Connu sous le nom de base de données procédurale - Vous pouvez voir les fonctions et l'utilisation disponibles en allant à la base de données de procédure à partir de GIMP. Ceux-ci sont disponibles pour Python sur le module "PDB", avec des soulignements remplaçant les tirets sur les noms de fonction (et chaque fois que le premier argument est "interactif / non interactif, TI doit être omis de l'appel)

La plus grande affaire est que toutes ces fonctions fonctionnent simplement à partir de l'instance exécutée de Witina de GIMP - Important les modules GIMP, GIMPFU ou PDB de Pytho en dehors de GIMP vous donnera une erreur.

D'un autre côté, en plus de l'API de GIMP, vous avez à votre disposition le plein Langue Python - avec tout ce qu'elle a sur sa bibliothèque standard, ainsi que les modules tiers que vous choisissez d'installer.

Ainsi, vous pouvez écrire une application qui écoute les appels XML-RPC, recevoir un message texte et "EXEC" ce message en tant que script - Voilá (veuillez faire cela si vous faites absolument confiance à la source de demande pour les scripts).

L'écriture de scripts Python pour GIMP peut être quelque peu délicat - vous êtes encouragé à jouer le long de la console Python à partir de GIMP-> Filters-> Python-> Menu de la console, et à vérifier la documentation et les exemples ailleurs (http://stackoverflow.com/questions / Tagged / gimp + python) sur la façon dont ces scripts sont effectués. D'un autre côté, créer un serveur XML-RPC utilisant Python pour être exécuté à partir d'un plug-in GIMP est une chose facile, et même les documents Python officiels peuvent vous donner un exemple: http://docs.python.org/library/simplexmlrpcserver.html

Vous devez créer votre "Server de script XML-RPC" comme un plug-in GIMP-Python et démarrer GIMP avec une ligne de commande comme gimp -i -b (python-fu-myserverplugin ) Pour le faire fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top