Python Skript für Gimp

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
gahleitner
User
Beiträge: 20
Registriert: Montag 1. Mai 2017, 09:57

Python Skript für Gimp

Beitragvon gahleitner » Samstag 15. Juli 2017, 21:22

Hallo!
Ich habe https://www.gimp.org/docs/python und https://clubcomputer.at/2016/10/06/gimp-einfuehrung eingehends studiert und auch vorhandene Skripte für Gimp studiert, aber ich komme nicht weiter. das Skript wird zwar geladen, aber im Menü nicht angezeigt. Auch die Befehle config,... funktionieren bei mir nicht. Ausserdem: Wie kann ich bei einem Skript, das von Gimp geladen wurde, einen Fehler finden? Mit der Console (print...) ist es ja nun nicht mehr möglich. Gimpfu ist aber vorhanden. Kann mir jemand helfen?

Tschüss
gerhardf
Melewo
User
Beiträge: 167
Registriert: Mittwoch 3. Mai 2017, 16:30

Re: Python Skript für Gimp

Beitragvon Melewo » Sonntag 16. Juli 2017, 11:43

gahleitner hat geschrieben:Gimpfu ist aber vorhanden.

Gimpfu?
Kannte bisher nur Script-Fu und Du benötigst zusätzlich Python-Fu. So zumindest verstehe ich die Anleitung, ausprobiert habe ich es jedoch noch nicht. Doch hier ist eine bebilderte, vielleicht geht es mit dieser einfacher:

https://docs.gimp.org/de/gimp-filters-python-fu.html
gahleitner
User
Beiträge: 20
Registriert: Montag 1. Mai 2017, 09:57

Re: Python Skript für Gimp

Beitragvon gahleitner » Montag 17. Juli 2017, 09:37

Hallo!

Gimpfu ist das Modul, das man importieren muss, damit die Skripte in GIMP auch funktionieren. Zumindest in der Theorie. Gibt es hier jemand, der schon Skripte für Gimp geschrieben hat und mir weiterhelfen kann?
Melewo
User
Beiträge: 167
Registriert: Mittwoch 3. Mai 2017, 16:30

Re: Python Skript für Gimp

Beitragvon Melewo » Montag 17. Juli 2017, 11:50

Habe gerade meine alte Gimp-Version deinstalliert und eine neue installiert und bisher war noch alles so, wie in der verlinkten Anleitung beschrieben. In der Console steht einleitend:

  1. GIMP 2.8.22 Python Console
  2. Python 2.7.10

Mit dem Rest werde ich mich etwas später beschäftigen.
Melewo
User
Beiträge: 167
Registriert: Mittwoch 3. Mai 2017, 16:30

Re: Python Skript für Gimp

Beitragvon Melewo » Montag 17. Juli 2017, 20:30

So, bin ein wenig weiter.
Die gute Nachricht, es werden keine zusätzlichen Module benötigt, wie es aussieht scheint Gimp alles an Bord zu haben, kann mich aber auch irren. Doch ich habe da selbst Tkinter gesehen.
Die Python-Fu Scripts werden wohl als Plugins geschrieben, dann in einem Plugin-Verzeichnis von Gimp abgelegt. Wo dieses Verzeichnis zu finden ist, wird auf der folgenden Seite beschrieben. Auf der Seite wird weiterhin ein Zip-Archiv mit 12 Dateien zum Testen angeboten:

http://registry.gimp.org/node/28124

Weniger gut ist zurzeit, ich komme bereits mit dem ersten Beispiel-Plugin nicht klar. Also der Eintrag erscheint zwar im Menü unter Filter, es rührt sich nur nichts oder ich stelle mich zu dumm an. Es hilft wohl nichts, man müsste sich mehr mit Gimp und der Gimp Python Dokumentation beschäftigen.

Also, das soll das einfachste Beispiel sein, sieht ja auch einfach aus.

  1. #!/usr/bin/env python
  2. #
  3. # -------------------------------------------------------------------------------------
  4. #
  5. # Copyright (c) 2013, Jose F. Maldonado
  6. # All rights reserved.
  7. #
  8. # Redistribution and use in source and binary forms, with or without modification,
  9. # are permitted provided that the following conditions are met:
  10. #
  11. #    - Redistributions of source code must retain the above copyright notice, this
  12. #    list of conditions and the following disclaimer.
  13. #    - Redistributions in binary form must reproduce the above copyright notice,
  14. #    this list of conditions and the following disclaimer in the documentation and/or
  15. #    other materials provided with the distribution.
  16. #    - Neither the name of the author nor the names of its contributors may be used
  17. #    to endorse or promote products derived from this software without specific prior
  18. #    written permission.
  19. #
  20. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
  21. # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  22. # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
  23. # SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  24. # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
  25. # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
  26. # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  27. # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  28. # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  29. # DAMAGE.
  30. #
  31. # -------------------------------------------------------------------------------------
  32. #
  33. # This file is a basic example of a Python plug-in for GIMP.
  34. #
  35. # It can be executed by selecting the menu option: 'Filters/Test/Hello world'
  36. # or by writing the following lines in the Python console (that can be opened with the
  37. # menu option 'Filters/Python-Fu/Console'):
  38. # >>> image = gimp.image_list()[0]
  39. # >>> layer = image.layers[0]
  40. # >>> gimp.pdb.python_fu_test_hello_world(image, layer)
  41.  
  42. from gimpfu import *
  43.  
  44. def say_hello_world(img, layer) :
  45.     ''' Display the message "Hello world" in the bottom of GIMP.
  46.    
  47.    Parameters:
  48.    img : image The current image.
  49.    layer : layer The layer of the image that is selected.
  50.    '''
  51.     gimp.message("Hello world")
  52.  
  53. register(
  54.     "python_fu_test_hello_world",
  55.     "Hello world",
  56.     "Display a 'hello world' message",
  57.     "JFM",
  58.     "Open source (BSD 3-clause license)",
  59.     "2013",
  60.     "<Image>/Filters/Test/Hello world",
  61.     "*",
  62.     [],
  63.     [],
  64.     say_hello_world)
  65.  
  66. main()
Melewo
User
Beiträge: 167
Registriert: Mittwoch 3. Mai 2017, 16:30

Re: Python Skript für Gimp

Beitragvon Melewo » Montag 17. Juli 2017, 21:15

Ein nächstes Beispiel aus dem Zip-Archiv mit dem Dateinamen "test-say-something.py" hat funktioniert!
Melewo
User
Beiträge: 167
Registriert: Mittwoch 3. Mai 2017, 16:30

Re: Python Skript für Gimp

Beitragvon Melewo » Dienstag 18. Juli 2017, 07:51

So, nun habe ich weitere ausprobiert und muss mich korrigieren. Im ersten Beispiel konnte sich noch nichts rühren, da es lediglich als Muster diente, um einen Menüeintrag zu erzeugen. Für einen Menüeintrag wird innerhalb von register() in dieser Zeile bestimmt, wo das Plugin im Menü zu finden ist.

  1. "<Image>/Filters/Test/Hello world"

Alle anderen Plugins sind augenblicklich halt auch unter "Filter -> Test -> Bezeichnung" übers Menü erreichbar und die ich bisher ausprobiert habe, funktionierten. Also z.B. test-discolour-layer-v1.py ist dann unter "Filters ->Test -> Discolour layer v1" übers Menü auswählbar und wandelt ein Bild in ein Graustufenbild. Andere Beispiele sind mit Speicherung usw., die kann jeder für sich testen. Doch Plugins schreiben sich nicht von allein und nur mit etwas über Gimp lesen, dürfte es nicht getan sein. Da wirst Du etwas mehr durcharbeiten müssen.
Melewo
User
Beiträge: 167
Registriert: Mittwoch 3. Mai 2017, 16:30

Re: Python Skript für Gimp

Beitragvon Melewo » Dienstag 18. Juli 2017, 21:07

Also, das untere Beispiel von der Python-Fu-Seite aus dem Gimp-Handbuch ist reichlich irritierend, da kein neu erstelltes Image angezeigt wird, bevor keine Ebene mit 'gimp_layer_new' erzeugt und mit 'gimp_image_add_layer' hinzugefügt wird. Alternativ tut es auch 'gimp_display_new'. Beispiel mit der Python-Fu-Console:

  1. >>> image = pdb.gimp_image_new(400, 300, RGB)
  2. >>> pdb.gimp_display_new(image)

Dann, alles was mit gimp. beginnt, wie gimp.set_background(r, g, b), sollte unter

https://www.gimp.org/docs/python/

zu finden sein, doch alles was mit pdb. beginnt, wie im oberen Beispiel mit 'pdb.gimp_image_new' gehört zur Prozeduren-Datenbank (PDB) und ist wohl nur unter

http://oldhome.schmorp.de/marc/pdb/index.html

zu finden oder man sucht es sich innerhalb vom Prozeduren-Browser, wo es nur nicht gut beschrieben wird und schlechter zu finden ist, wenn man nicht weiß, wonach man suchen soll oder ich habe es nur noch nicht ausführlicher bei Gimp gefunden.

Dann noch eine Feststellung, das erste "Hello world" Beispiel war doch mehr als nur ein Muster für einen Menüeintrag, nur die Ausgabe erfolgte in der unteren Statusleiste, was ich einfach übersehen hatte, weil ich von der Mitte aufwärts auf etwas wartete.

Sollte nun eigentlich für einen Einstieg genügen.
Melewo
User
Beiträge: 167
Registriert: Mittwoch 3. Mai 2017, 16:30

Re: Python Skript für Gimp

Beitragvon Melewo » Dienstag 18. Juli 2017, 21:46

Irgendwie ein schreckliches Durcheinander, funktioniert zumindest auch.

  1. >>> image = gimp.Image(400, 300, RGB)
  2. >>> gimp.Display(image)
Melewo
User
Beiträge: 167
Registriert: Mittwoch 3. Mai 2017, 16:30

Re: Python Skript für Gimp

Beitragvon Melewo » Freitag 21. Juli 2017, 12:00

Als Nachtrag, falls jemand danach suchen sollte, das scheint endlich die die richtige Referenz zu sein, nur hatte Google mir die erst später ausgespuckt: GIMP Library Reference Manual
Im Prozeduren Browser von Gimp sind einige von den älteren mit Deprecated gekennzeichnet, wobei aber neuere aufgeführt werden, wie zum Beispiel:

  1. 'gimp_image_add_layer'
  2. Deprecated: Use 'gimp-image-insert-layer' instead.


Eine erste Beschreibung für Python Plugins ist über die Python-Fu Console einsehbar.

  1. >>> import gimpfu
  2. >>> help(gimpfu)

Zurück zu „Sonstige (Pygame, PyOpenGL, ...)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder