![Offline Offline](./styles/GimpChat/imageset/en/icon_user_offline.gif) |
Script Coder |
![User avatar](./download/file.php?avatar=3612_1702477869.png) |
Joined: May 07, 2014 Posts: 4003 Location: Canada
|
I don't know if this is Art, but I like looking at these collection like images. This was was placed together in GIMP after taking 37 photos and opening them as layers and cropping them all at once. ![Image](http://gimpchat.com/files/3612_37-gravel-rocks-tin-tran.jpg) Border was added by fineartamerica (I just saved it as image to share here). To place them, I don't know if there's an easier way but I just use my placement plug-in where when you have images opened as layers in the same image, you just run plug-in specifying how many you want horizontally and vertically (if there's more it'll just extend it to the bottom). Like here I specified 6 x 6 but it extended into 7th row (because of 37 and not 36). You can specify spacing between the layers placement as well. here's the plug-in just in case anyone else wants to use it: #!/usr/bin/env python # placement.py # Created by TT # # License: GPLv3 # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY# without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # To view a copy of the GNU General Public License # visit: http://www.gnu.org/licenses/gpl.html # # # ------------ #| Change Log | # ------------ # Rel 1: Initial release
from gimpfu import * import random import requests import time def python_placement(image, layer, xtiles, ytiles, spacing, shuffle): # pdb.gimp_image_undo_group_start(image) # pdb.gimp_context_push() #YOUR CODE BEGINS======================= tiles = len(image.layers) i = 0; x = 0; y = 0; j = [] for i in range(0,len(image.layers)): j.append(i) shuffle = int(shuffle) if (shuffle == 1): random.shuffle(j) for i in range(0,len(image.layers)): pdb.gimp_progress_update(float(i)/len(image.layers)) currentlayer = image.layers[j[i]] pdb.gimp_layer_set_offsets(currentlayer,x * (layer.width + spacing),y * (layer.height + spacing)) i += 1; x += 1; if x >= int(xtiles): x = 0; y += 1;
#YOUR CODE ENDS ======================== # pdb.gimp_context_pop() # pdb.gimp_image_undo_group_end(image) pdb.gimp_image_resize_to_layers(image) pdb.gimp_displays_flush()
#return
register( "python_fu_placement", "Creates Egg", "Creates Egg", "TT", "TT", "March 8, 2023", "<Image>/Python-Fu/Placement...", "*", # Create a new image, don't work on an existing one [ #INPUT BEGINS (PF_INT, "xtiles", "xtiles:", 6), (PF_INT, "ytiles", "ytiles:", 8), (PF_INT, "spacing", "spacing:", 70), (PF_TOGGLE, "shuffle", "Shuffle order:", 1), # (PF_SPINNER, "colors", "Number of Maximum Colors (randomly):", 16, (1, 32, 1)), # (PF_TOGGLE, "varysize", "Vary up sizes:", 1), # initially True, checked. Alias PF_BOOL # (PF_TOGGLE, "colorbackground", "Color background randomly:", 0), # initially True, checked. Alias PF_BOOL #(PF_SPINNER, "inc", "Increments (pixels):", 15, (1, 1000, 1)), #(PF_SPINNER, "outof", "Best out of:", 100, (1, 1000, 1)), #(PF_OPTION, "arrow_side", "Arrows Ends:", SIDE_END, SIDE_NAMES), #(PF_TOGGLE, "arrow_close", "Arrows Close:", 0), #(PF_SPINNER, "ignorelayers", "Ignore first (no of layers):", 2, (0, 200, 1)), #(PF_SPINNER, "shadow_offset_x", "Shadow Offset X:", 6, (-4096,4096,1)), #(PF_SPINNER, "shadow_offset_y", "Shadow Offset Y:", 6, (-4096,4096,1)), #(PF_SPINNER, "shadow_blur_radius", "Shadow Blur Radius:", 15, (0,1024,1)), #(PF_SPINNER, "shadow_opacity", "Shadow Opacity:", 100, (0,100,1)), #INPUT ENDS ], [], python_placement)
main()
# (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
|
|