It is currently Sat Jun 06, 2026 4:25 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: 4469
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.

_________________
TinT
My GIMP 2.10 plug-in writer Fiverr Gig
Plaid Community Forum
Imageplaid-patterns.com


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: 12775
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: 4469
Location: Canada
I have no idea what you're talking about DAP?

_________________
TinT
My GIMP 2.10 plug-in writer Fiverr Gig
Plaid Community Forum
Imageplaid-patterns.com


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: 12775
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: 16011
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

_________________
Image


Top
Post new topic Reply to topic  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]



* Login  



Powered by phpBB3 © phpBB Group