Re: Tkinter-Fenster in Gimp
Verfasst: Samstag 26. August 2017, 18:34
Hier bitte `os.path.join()` verwenden. Wäre doch doof wenn Gimp unter Windows und Linux funktioniert, das Plugin dann aber nur unter Windows.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
#!/usr/bin/env python
import os
from gimpfu import *
def batch(img, layer, inputFolder, outputFolder, radius, staerke,schwelle,farbe,hsv,scharf):
# Iterate the folder
for file in os.listdir(inputFolder):
try:
# Build the full file paths.
inputPath = inputFolder + "\\" + file
outputPath = outputFolder + "\\" + file
# Open the file if is a JPEG or PNG image.
image = None
if(file.lower().endswith(('.jpeg', '.jpg'))):
image = pdb.file_jpeg_load(inputPath, inputPath)
# Verify if the file is an image.
if(image != None):
# Invert the image.
if(len(image.layers) > 0):
layer = image.layers[0]
if farbe==1:
pdb.plug_in_color_enhance(image,layer)
if hsv==1:
pdb.plug_in_autostretch_hsv(image,layer)
if scharf==1:
pdb.python_fu_regle_schaerfe(image,layer,radius,staerke,schwelle)
# Save the image.
if(file.lower().endswith(('.jpeg', '.jpg'))):
pdb.file_jpeg_save(image, image.layers[0], outputPath, outputPath, 0.9, 0, 0, 0, "Creating with GIMP", 0, 0, 0, 0)
except Exception as err:
gimp.message("Unexpected error: " + str(err))
register(
"python_fu_automatic",
"Automatik",
"Apply the cartoon filter to the PNG and JPEG images of a folder.",
"Gerhard Gahleitner",
"Open source (BSD 3-clause license)",
"2017",
"<Image>/Filters/Test/Macro",
"*",
[
(PF_DIRNAME, "inputFolder", "Eingabeordner", ""),
(PF_DIRNAME, "outputFolder", "Ausgabeordner", ""),
(PF_TOGGLE, "farbe", "Farbverbesserung:", 1), # initially True, checked. Alias PF_BOOL
(PF_TOGGLE, "hsv", "HSV strecken:", 1),
(PF_TOGGLE, "scharf", "Schaerfen:", 1),
(PF_SLIDER, "radius", "Radius", 4, (0,100,0.1)),
(PF_SLIDER, "staerke", "Menge" , 5, (0.0,10,0.01)),
(PF_SLIDER, "schwelle", "Schwellwert:", 0, (0, 255, 1))
],
[],
batch)
main()
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gimpfu import pdb, register, main, PF_IMAGE, PF_DRAWABLE, PF_SLIDER
def regle_schaerfe(image, layer, radius, staerke, schwelle):
ww=pdb.gimp_image_width(image)
hh=pdb.gimp_image_height(image)
pdb.gimp_image_undo_group_start(image) #(img)
pdb.gimp_edit_copy(image.layers[0]) #HSV kann nur im RGB Modus nachbearbeitet werden.
rgb_layer=pdb.gimp_layer_new(image,ww,hh,0,"Neue Ebene",100,0)#RGB_IMAGE
pdb.gimp_image_add_layer(image,rgb_layer,-1)
floating=pdb.gimp_edit_paste(rgb_layer,True)
pdb.gimp_floating_sel_anchor(floating)
## pseudolab_layer=image.layers[1]
pdb.gimp_image_undo_group_start(image)
temp_image = pdb.plug_in_decompose(image, layer, "HSV", 0)
arbeits_ebene = pdb.gimp_image_get_active_layer(temp_image[2])
pdb.plug_in_unsharp_mask(image, arbeits_ebene, radius, staerke, schwelle)
view_image = pdb.plug_in_compose(temp_image[0],arbeits_ebene,temp_image[1],temp_image[2],temp_image[3],"HSV")
pdb.gimp_image_undo_group_end(image)
# pdb.gimp_display_new(neues_image)
view_image_layer=pdb.gimp_image_get_active_layer(view_image)
pdb.gimp_edit_copy(view_image_layer)
floating=pdb.gimp_edit_paste(image.layers[0],True)
pdb.gimp_floating_sel_anchor(floating)
pdb.gimp_image_set_active_layer(image,image.layers[0])
# pdb.gimp_image_set_active_layer(view_image,view_image_layer)
pdb.gimp_image_undo_group_end(image)
# pdb.gimp_display_new(view_image)
# pdb.gimp_image_delete(image)
for i in range(len(temp_image)):
if temp_image[i] is not None:
pdb.gimp_image_delete(temp_image[i])
pdb.gimp_image_remove_layer(image,image.layers[1])
register(
"regle_schaerfe",
"Test Schärferegler",
"Nur ein Test mit einem Schärferegler",
"Gerhard Gahleitner",
"MIT-Lizenz",
"2017",
"Schärfen",
"RGB*",
# PF_SLIDER - Voreinstellung, (min, max, Schrittweite)
[
(PF_IMAGE, "image", "Input Image", None),
(PF_DRAWABLE, "layer", "Input Ebene", None),
(PF_SLIDER, "radius", "Radius", 4.0, (0.1, 100, 0.1)),
(PF_SLIDER, "staerke", "Stärke", 5.0, (0.1, 10, 0.01)),
(PF_SLIDER, "schwelle", "Schwellwert:", 0, (0, 255, 1))
],
[],
regle_schaerfe,
menu="<Image>/Colors/Auto")
main()
Ja, das könnte ich, nur nicht unbedingt in den nächsten zwei Tagen.gahleitner hat geschrieben:Kannst du mir helfen?
Das wird aber alles nichts, wenn Du Dich nicht weiter in Python einarbeitest, um Anmerkungen und Hinweise, wie z.B. von BlackJack gegeben, aufzunehmen und umzusetzen und um den Unterschied zwischen Konstanten und Modulen zu erkennen.gahleitner hat geschrieben:Gibt es eine Doku über die PF_ Module und deren Definitionen?
Code: Alles auswählen
# In Zeile 116
PF_BOOL = PF_TOGGLE
# In Zeile 153
PF_TOGGLE : PDB_INT32,
# In Zeile 190
PF_TOGGLE : bool,
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gimpfu import main, register, PF_TOGGLE
import gimp
def checke_werte(name, data):
if data is True:
return "{0} ist {1}\n".format(name, data)
elif data is False:
return "{0} ist {1}\n".format(name, data)
def checke_toggle(farbe, hsv_typ, scharf):
# Ausgabe in Widget
gimp.message(
"{0}{1}{2}".format(
checke_werte("Farbe", farbe),
checke_werte("HSV", hsv_typ),
checke_werte("Schaerfen", scharf)
)
)
register(
"checke_toggle",
"Beispiel mit Toggle",
"Nur ein Beispiel mit PF_TOGGLE",
"Mele Melewo",
"MIT-Lizenz",
"2017",
"Beispiel Toggle",
None,
[
(PF_TOGGLE, "farbe", "Farbe: ", True),
(PF_TOGGLE, "hsv_typ", "HSV: ", False),
(PF_TOGGLE, "scharf", "Schaerfen: ", True)
],
[],
checke_toggle,
menu="<Image>/Eigene/PF-Tests"
)
main()
So, nun noch einmal zum Helfen.gahleitner hat geschrieben:Gibt es eine Doku über die PF_ Module und deren Definitionen?
...
Kannst du mir helfen?
Und das hatte ich hier bereits geschrieben. Wenn bei der Registrierung die neue Reihenfolge nicht beachtet wird, greift ein "Notfallplan", beim dem es zu einer Zwangszuweisung von "file_params" kommt, damit ältere Plugins weiterhin lauffähig bleiben:gahleitner hat geschrieben:Wie ich schon mal geschrieben habe, möchte ich - wenn es möglich ist - das Skript auch ohne geöffnetes Bild starten. Wenn ich in register das Sternchen (*) entferne, geht es, aber es werden 2 zusätzliche Sachen (input Image und Input Drawable) angezeigt. Kann man das unterbinden?
Code: Alles auswählen
def regle_schaerfe(image, layer, ...):