01-14-2024, 03:02 PM
Hello,
I have a problem with script in Python-FU. I want to run the script by drag-and-drop two files on .bat file.
Script is working fine when I run it from GIMP menu, but from .bat i receive error:
.bat file:
file-import-as-layer.py
What arguments I need to specify?
I have a problem with script in Python-FU. I want to run the script by drag-and-drop two files on .bat file.
Script is working fine when I run it from GIMP menu, but from .bat i receive error:
Code:
Error: Invalid number of arguments for python-fu-file-import-as-layer (expected 5 but received 2)
.bat file:
Code:
@echo off
setlocal enabledelayedexpansion
if "%~2"=="" (
echo Please provide two file paths.
pause
exit /b
)
set "file1=%~1"
set "file2=%~2"
start "" "C:\Program Files\GIMP 2\bin\gimp-2.10.exe" -b "(python-fu-file-import-as-layer \"%file1%\" \"%file2%\")"
exit /b
file-import-as-layer.py
Code:
#!/usr/bin/env python2
from gimpfu import *
def file_import_as_layer(fname_one, fname_two, image, layer):
try:
# Load the main image
image = pdb.gimp_file_load(fname_one, fname_one)
# Check if the image loaded successfully
if not image:
raise Exception("Failed to load the main image.")
# Load the second image as a layer
drawable2 = pdb.gimp_file_load_layer(image, fname_two)
# Check if the layer loaded successfully
if not drawable2:
raise Exception("Failed to load the second image as a layer.")
# Make sure the second layer is visible
pdb.gimp_item_set_visible(drawable2, True)
# Get the layer position in the layer stack
position = len(image.layers)
# Create a new image for both layers
new_image = pdb.gimp_image_new(image.width, image.height, image.base_type)
# Duplicate the main layer
new_layer_main = pdb.gimp_layer_new_from_drawable(image.layers[0], new_image)
# Duplicate the second layer
new_layer_inserted = pdb.gimp_layer_new_from_drawable(drawable2, new_image)
# Insert the main layer into the new image
pdb.gimp_image_insert_layer(new_image, new_layer_main, None, 0)
# Insert the second layer into the new image
pdb.gimp_image_insert_layer(new_image, new_layer_inserted, None, 1)
# Show the new image with both layers
gimp.Display(new_image)
except Exception as e:
pdb.gimp_message("Error: {}".format(str(e)))
# Register the Python-fu script
register(
"python_fu_file_import_as_layer",
"Import a file as a layer",
"Import a file as a layer into the current image",
"Author",
"Author",
"2024",
"<Image>/File/Import As Layer...",
"*",
[
(PF_STRING, "fname_one", "Main Image", ""),
(PF_STRING, "fname_two", "Image to import as layer", "")
],
[],
file_import_as_layer
)
main()
What arguments I need to specify?