Hallo!
Hier ein Code:
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()
Anscheinend stimmt was mit den Abfragen nicht: Schreibe ich if farbe: dann macht es alle Bearbeitungen, bei if farbe==1 macht es keine Bearbeitung - in beiden Fällen ist es egal, ob ich "Yes" oder "No" wähle. Beim Schärfen sieht man am Macrorecorder, dass es arbeitet - am Bild sieht man aber, dass es nicht geschärft ist. Das Schärf-Tool funktioniert aber als Standalone einwandfrei. Hier noch der Code für das Schärftool:
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()
Ich wollte nicht, dass sich eine neue Datei erstellt wird, hab es daher ein bisschen erweitert.
Gibt es eine Doku über die PF_ Module und deren Definitionen?
Gibt es auch eine Möglichkeit, den "Macrorecorder" auch ohne geöffnetes Bild zu starten? Wenn ich bei RGB das * entferne, bekomme ich beim Ablauf eine Fehlermeldung.
Kannst du mir helfen?
Tschüss
Gerhard