def _add_margin(img, drawable, size): """ Add bleed margin to an image. """ if size: new_width = drawable.width + 2 * size new_height = drawable.height + 2 * size pdb.gimp_image_resize(img, new_width, new_height, size, size) pdb.gimp_layer_resize(drawable, new_width, new_height, size, size)
def _clip(img, drawable, clip_size, rotated_back): """ Clip an image. """ new_width = drawable.width - 2 * clip_size new_height = drawable.height - 2 * clip_size if rotated_back: off = -(math.floor(clip_size)) else: off = -(math.ceil(clip_size)) pdb.gimp_image_resize(img, new_width, new_height, off, off) pdb.gimp_layer_resize(drawable, new_width, new_height, off, off)
def elaborate(image, drawable, image2): # insert the alpha channel # after the text extraction the blue background will be deleted layer = image.active_layer pdb.gimp_layer_add_alpha(layer) # create 4 copies of the visor image ss_info_coords = [ CropCoords(410, 250, 132, 334), CropCoords(321, 149, 119, 606), CropCoords(199, 85, 125, 239), CropCoords(293, 81, 1521, 500), CropCoords(228, 113, 1575, 588) ] # ss_info_coords = [CropCoords(410, 250, 132, 334)] n_layers = len(ss_info_coords) for i in range(n_layers - 1): add_alpha = 1 #0 = False | 1 = True copy_layer = pdb.gimp_layer_copy(layer, add_alpha) position = 0 pdb.gimp_image_add_layer(image, copy_layer, position) for ilayer in range(n_layers): layer = image.layers[ilayer] pdb.gimp_layer_resize(layer, *ss_info_coords[ilayer].crop_layer()) for ilayer in range(n_layers): layer = image.layers[ilayer] select_text(image, layer) clear_background(image, layer) beautify_font(image, layer) add_black_outline(image, layer, ilayer, *ss_info_coords[ilayer].add_layer()) for ilayer in range(n_layers): layer = image.layers[ilayer] copy_all(image, layer) paste_in_new_image(image2, ilayer, *ss_info_coords[ilayer].add_layer())
def layerToDDS(timg, tdrawable, file, argumentFile, outFolder, byName, scaleBool, scaleTo): #, argumentFile,hmm,blub): # num_layers, layer_ids = pdb.gimp_image_get_layers(image) # with open("E:/out.txt",'w') as outTxt: # outTxt.write(str(os.getcwd())) outFolder = os.path.dirname(file) + "/" + outFolder if not os.path.exists(outFolder): os.makedirs(outFolder) if argumentFile.lower() == "all": image = pdb.gimp_file_load(file, file) fileContent = [] for layer in image.layers: layername = pdb.gimp_item_get_name(layer) fileContent.append(layername + " " + layername) byName = True else: with open(argumentFile, 'r') as argfile: fileContent = [line for line in argfile] for l in fileContent: image = pdb.gimp_file_load(file, file) if scaleBool: if scaleTo: pdb.gimp_image_resize(image, 52, 52, -26, -26) else: pdb.gimp_image_scale(image, 52, 52) line = shlex.split(l) outFile = outFolder + "/" + line[0] if outFile[-4:] != ".dds": outFile += ".dds" for layer in image.layers: # layer = pdb.gimp_image_get_layer_by_name(image, id) pdb.gimp_item_set_visible(layer, False) layers = [] for i, word in enumerate(line[1:]): if byName: if word[:4] == "MOVE": word2 = word[5:] layer = pdb.gimp_image_get_layer_by_name(image, word2) # pdb.gimp_item_set_visible(layer,True) pdb.gimp_layer_scale(layer, 40, 40, False) pdb.gimp_image_set_active_layer(image, layer) drawable = pdb.gimp_image_get_active_layer(image) if word[4] == "L": pdb.script_fu_move_layer_to(image, drawable, -2.5, 5) elif word[4] == "R": pdb.script_fu_move_layer_to(image, drawable, 17.5, 5) line[1 + i] = line[1 + i][5:] # pdb.gimp_item_set_visible(layer,False) for word in line[1:]: #outTxt.write(word+"\n") #layers.append(pdb.gimp_layer_copy(image.layers[int(word)],False)) #pdb.gimp_image_insert_layer(image, layer,image.layers[int(word)], 0) try: if byName: pdb.gimp_item_set_visible( pdb.gimp_image_get_layer_by_name(image, word), True) else: pdb.gimp_item_set_visible(image.layers[int(word)], True) except: pdb.gimp_message("Error parsing line " + " ".join(line) + ". Probably a missing/invalid item") raise if scaleBool and scaleTo: for word in line[2:]: if byName: layer = pdb.gimp_image_get_layer_by_name(image, word) else: layer = image.layers[int(word)] pdb.gimp_layer_scale(layer, scaleTo, scaleTo, False) pdb.gimp_layer_resize(layer, 52, 52, -1, -1) # for layer in layers: # outTxt.write("{!s}".format(layer)) # pdb.gimp_item_set_visible(layer, True) #pdb.gimp_item_set_visible(image.layers[3], True) #pdb.gimp_item_set_visible(image.layers[5], True) layer = pdb.gimp_image_merge_visible_layers(image, 0) pdb.gimp_image_set_active_layer(image, layer) drawable = pdb.gimp_image_get_active_layer(image) for layerIt in image.layers: if layerIt != layer or not scaleTo: pdb.gimp_layer_resize_to_image_size(layerIt) try: pdb.file_dds_save(image, drawable, outFile, outFile, 0, 0, 0, 0, 0, 0, 0) except: pdb.file_dds_save(image, drawable, outFile, outFile, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)