|
Script Coder |
|
Joined: May 07, 2014 Posts: 3999 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. 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
|
|