It is currently Wed Oct 28, 2026 10:09 am


All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 5 posts ] 
Author Message
 Post subject: 1D Tile to 2D
PostPosted: Sat Aug 03, 2024 3:41 pm  (#1) 
Offline
Script Coder
User avatar

Joined: May 07, 2014
Posts: 4561
Location: Canada
When you have a horizontal image of let's say 25 tiles for example.
And you want to put it as a 5x5 with border spacing around each one.
for example this
Image
into this
Image
#!/usr/bin/env python
# Author: (Tin Tran)
# Created On: 2024.08.03
# My own grunty bot/script that will take a 1D horizontal multiframe tiles and arranges into 2D xtiles by ytiles
#
# License: Whatever GIMP's License is.
# Revisions:
# Rel 0.10: Initial Version
from gimpfu import *
import random
import math
import os
def oneDtiletwoD(image,layer,xtiles,ytiles,borderpixels):
    xtiles = int(xtiles)
    ytiles = int(ytiles)
    frames = xtiles*ytiles
    width = layer.width/frames
    height = layer.height
    w = (width+borderpixels*2)*xtiles + borderpixels*2
    h = (height+borderpixels*2)*xtiles + borderpixels*2
    new_image = pdb.gimp_image_new(w,h,RGB)
    display_new = pdb.gimp_display_new(new_image)
    new_layer = pdb.gimp_layer_new(new_image,w,h,RGBA_IMAGE,'new layer',100,LAYER_MODE_NORMAL)
    pdb.gimp_image_insert_layer(new_image,new_layer,None,0)
    for y in range(0,ytiles):
        for x in range(0,xtiles):
            frame = y*xtiles+x;
            pdb.gimp_image_select_rectangle(image,CHANNEL_OP_REPLACE,frame*width,0,width,height)
            pdb.gimp_edit_copy(layer)
            floating_sel = pdb.gimp_edit_paste(new_layer,TRUE)
            pdb.gimp_floating_sel_to_layer(floating_sel)
            pdb.gimp_layer_set_offsets(floating_sel,x*(width+borderpixels*2)+borderpixels*2,y*(height+borderpixels*2)+borderpixels*2)

register(
    "python_fu_1Dtile2D",
    "description",
    "longer description",
    "author name",
    "copyright name",
    "2024.08.03",
    "1D tile 2D...",
    "RGB*",      # Alternately use RGB, RGB*, GRAY*, INDEXED etc.
    [
    #INPUT BEGINS
    (PF_IMAGE, "image", "Image", None),
    (PF_DRAWABLE,   "layer", "Drawable", None),
    (PF_INT, "xtiles", "xtiles:", 5),
    (PF_INT, "ytiles", "xtiles:", 5),
    (PF_INT, "borderpixels", "borderpixels:", 10),
    #INPUT ENDS
    ],
    [],
    oneDtiletwoD,
    menu="<Image>/Python-Fu")

main()

# Below is all the example input types for INPUTS for the plug-in which can be cut and pasted into #INPUT BEGINS section and edited to taste (found online years back that I didn't want to constantly look up)
# Since GIMP is free anyways, I thought it would be handy here for me to CUT and PASTE, CHANGE, USE.
#           (PF_INT, "p0", "_INT:", 0), # PF_INT8, PF_INT16, PF_INT32  similar but no difference in Python.
#           (PF_FLOAT, "p02", "_FLOAT:", 3.141),
#           (PF_STRING, "p03", "_STRING:", "foo"),  # alias PF_VALUE
#           (PF_TEXT, "p04", "TEXT:", "bar"),
#           # PF_VALUE
#           # Pick one from set of choices
#           (PF_OPTION,"p1",   "OPTION:", 0, ["0th","1st","2nd"]), # initially 0th is choice
#           (PF_RADIO, "p16", "RADIO:", 0, (("0th", 1),("1st",0))), # note bool indicates initial setting of buttons
#           # PF_RADIO is usually called a radio button group.
#           # SLIDER, ADJUSTMENT types require the extra parameter of the form (min, max, step).
#           (PF_TOGGLE, "p2",   "TOGGLE:", 1), # initially True, checked.  Alias PF_BOOL
#           # PF_TOGGLE is usually called a checkbox.
#           (PF_SLIDER, "p3", "SLIDER:", 0, (0, 100, 10)),
#           (PF_SPINNER, "p4", "SPINNER:", 21, (1, 1000, 50)),  # alias PF_ADJUSTMENT
#           # Pickers ie combo boxes ie choosers from lists of existing Gimp objects
#           (PF_COLOR, "p14", "_COLOR:", (100, 21, 40) ), # extra param is RGB triple
#           # PF_COLOUR is an alias by aussie PyGimp author lol
#           (PF_IMAGE, "p15", "IMAGE:", None), # should be type gimp.image, but None works
#           (PF_FONT, "p17", "FONT:", 0),
#           (PF_FILE, "p18", "FILE:", 0),
#           (PF_BRUSH, "p19", "BRUSH:", 0),
#           (PF_PATTERN, "p20", "PATTERN:", 0),
#           (PF_GRADIENT, "p21", "GRADIENT:", 0),
#           (PF_PALETTE, "p22", "PALETTE:", 0),
#           (PF_LAYER, "p23", "LAYER:", None),
#           (PF_CHANNEL, "p24", "CHANNEL:", None),  # ??? Usually empty, I don't know why.
#           (PF_DRAWABLE, "p25", "DRAWABLE:", None),
#           # Mostly undocumented, but work
#           (PF_VECTORS, "p26", "VECTORS:", None),
#           (PF_FILENAME, "p27", "FILENAME:", 0),
#           (PF_DIRNAME, "p28", "DIRNAME:", 0)
#           # PF_REGION might work but probably of little use.  See gimpfu.py.

_________________
Image
Visualize your and others dreams coming true.


Share on Facebook Share on Twitter Share on Orkut Share on Digg Share on MySpace Share on Delicious Share on Technorati
Top
 Post subject: Re: 1D Tile to 2D
PostPosted: Tue Aug 06, 2024 9:18 pm  (#2) 
Offline
GimpChat Member
User avatar

Joined: Sep 24, 2010
Posts: 12853
Have ran across and used similar Gimp plugins for this already, Tran and such programs definitely come in handy, especially when I create DAP presets. :)

_________________
Lyle

Psalm 109:8

Image


Top
 Post subject: Re: 1D Tile to 2D
PostPosted: Tue Aug 06, 2024 9:37 pm  (#3) 
Offline
Script Coder
User avatar

Joined: May 07, 2014
Posts: 4561
Location: Canada
I have no idea what you're talking about DAP?

_________________
Image
Visualize your and others dreams coming true.


Top
 Post subject: Re: 1D Tile to 2D
PostPosted: Wed Aug 07, 2024 2:51 pm  (#4) 
Offline
GimpChat Member
User avatar

Joined: Sep 24, 2010
Posts: 12853
Dynamic Auto Painter from Mediachance. Have to admit it's been more than a year since I last did create a brush preset. lol

:)

_________________
Lyle

Psalm 109:8

Image


Top
 Post subject: Re: 1D Tile to 2D
PostPosted: Sun Aug 11, 2024 1:04 am  (#5) 
Offline
Global Moderator
User avatar

Joined: May 16, 2010
Posts: 16213
lylejk wrote:
Dynamic Auto Painter from Mediachance. Have to admit it's been more than a year since I last did create a brush preset. lol

:)

Love that program still have that , arcimbolder ( and picpaks) installed :bigthup :)

Nice , very helpful plug-in Tran, as usual. :bigthup :tyspin
I can imagine some Gimp animated Brushes. :yes


Top
Post new topic Reply to topic  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]



* Login  



Powered by phpBB3 © phpBB Group