Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python Fu Image Creation - Slight Issues
#1
Hi all,

I decided to finally start learning Python-Fu (I'm already familiar with Python), and I've been getting a feel for it by converting some of my older Script-Fu scripts to Python-Fu. It's going well so far, and I've been able to convert a few. Currently, I'm working on one of my scripts to create a preview image template. Formerly, I had a series of scripts that I could use to create different sized previews. I've streamlined it to one single new Python-Fu script with two sliders that allow me to customize how big I want the preview image canvas. The sliders determine the number of rows and columns, and then the image and guides are generated from that. The script works well, but there are two issues:
  1. When I don't have any images open, and I run this script, the dialog for it appears, and there are two dropdowns at the top for "Input Image" and "Input Drawable", above the sliders for number of rows and columns. Both say "(Empty)," and that's the only option. If I already have another image open, these dropdowns don't appear. Is this normal? Is there any way to prevent these from appearing? 
  2. The image, when created, is black. The older script-Fu scripts (that essentially had the same coding) would create a white image. I'm sure there are many ways to make the image white, but how do I default to that?
Here's the Python-Fu code:
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from gimpfu import*

def multiSkinPreviewAny (theImage, theLayer, columns, rows):
   # Establish the dimensions of the image based on the number of rows and columns
   theImageWidth = 543 * columns
   theImageHeight = 1080 * rows
   # Create the image
   theImage = pdb.gimp_image_new(theImageWidth, theImageHeight, 0)
   # Create the main layer
   theLayer = pdb.gimp_layer_new(theImage, theImageWidth, theImageHeight, 0, "Background", 100, 28)
   # Add the layer to the image
   pdb.gimp_image_add_layer(theImage, theLayer, 0)
   # Add guides at the top left and bottom right
   guide = pdb.gimp_image_add_vguide(theImage, 0)
   guide = pdb.gimp_image_add_hguide(theImage, 0)
   guide = pdb.gimp_image_add_vguide(theImage, theImageWidth)
   guide = pdb.gimp_image_add_hguide(theImage, theImageHeight)
   i = 0
   # Add 1 vertical guide for every column
   while i < columns:
       xcoord = i * 543
       guide = pdb.gimp_image_add_vguide(theImage, xcoord)
       i += 1
   # Re-initiate the counter
   i = 0
   # Add 1 horizontal guide for every row
   while i < rows:
       ycoord = i * 1080
       guide = pdb.gimp_image_add_hguide(theImage, ycoord)
       i += 1
   # Display the new image
   display = pdb.gimp_display_new(theImage)

register(
   "python_fu_marvelmods_common_multiskinpreviewany",
   "Create template grid for skin preview images.",
   "Create template grid for skin preview images.",
   "BaconWizard17",
   "BaconWizard17",
   "December 2022",
   "<Image>/Marvel Mods/Skin Previews/Multi Skin Showcase/Custom Size Skin Preview",
   "",
   [
       (PF_SLIDER, "columns", "Number of Columns:", 2, (1, 8, 1)),
       (PF_SLIDER, "rows", "Number of Rows:", 2, (1, 8, 1))
   ],
   [],
   multiSkinPreviewAny)

main()

And here's one of the Script-Fu scripts for comparison:
Code:
; 2x2 grid skin preview for XML2/MUA1 skins
(define (script-fu-mua-xml2-2x2-preview)
    (let*
        (
            ; define our local variables
            ; create a new image:
            (theImageWidth  1086)
            (theImageHeight 2160)
            (theImage
                (car
                    (gimp-image-new
                        theImageWidth
                        theImageHeight
                        RGB
                    )
                )
            )
            ; background layer
            (theLayer
                (car
                    (gimp-layer-new
                        theImage
                        theImageWidth
                        theImageHeight
                        RGBA-IMAGE
                        "Background"
                        100
                        LAYER-MODE-NORMAL
                    )
                )
            )
        ) ;end of our local variables
        ; add the layers
        (gimp-image-add-layer theImage theLayer 0)
        ; add the guides
        (gimp-image-add-hguide theImage 1080)
        (gimp-image-add-vguide theImage 543)
        ; show the new image on the screen
        (gimp-display-new theImage)
   )
)
; populate script registration information
(script-fu-register
   "script-fu-mua-xml2-2x2-preview"
   "2x2 Skin Preview"
   "Creates an image for a 2x2 grid preview for 4 skins."
   "BaconWizard17"
   "BaconWizard17"
   "September 2021"
   ""
)
; register the script within gimp menu
(script-fu-menu-register "script-fu-mua-xml2-2x2-preview" "<Image>/Marvel Mods/Skin Previews/Multi Skin Showcase")

Any input is appreciated!
Modder/Skinner at MarvelMods.com using GIMP to create, edit, and export textures and previews more efficiently.

My GIMP scripts hosted on GitHub
Reply


Messages In This Thread
Python Fu Image Creation - Slight Issues - by BaconWizard17 - 12-31-2022, 06:00 AM

Forum Jump: