Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Using files path as variables from .bat
#1
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:
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?
Reply


Messages In This Thread
Using files path as variables from .bat - by DeX - 01-14-2024, 03:02 PM

Forum Jump: