def caches(inImg, inNameLayerFleche, inNameLayerFond):
    path_cadenas = GRAPH_PATH + "images/cadenas.png"
    imagecadenas = pdb.gimp_file_load(path_cadenas, path_cadenas)
    layercadenas = pdb.gimp_image_get_active_layer(imagecadenas)

    pdb.gimp_selection_all(imagecadenas)
    pdb.gimp_edit_copy(layercadenas)
    pdb.gimp_image_delete(imagecadenas)

    layerfond = pdb.gimp_image_get_layer_by_name(inImg, inNameLayerFond)
    layerfleche = pdb.gimp_image_get_layer_by_name(inImg, inNameLayerFleche)
    _, alayers = pdb.gimp_image_get_layers(inImg)

    for layercurrent in alayers:
        pdb.gimp_selection_none(inImg)
        layercurrent = gimp.Item.from_id(layercurrent)
        pdb.script_fu_add_bevel(inImg, layercurrent, 5, 0, 0)

        pdb.gimp_item_set_visible(layercurrent, False)
        layername = pdb.gimp_item_get_name(layercurrent)
        if not (layername == inNameLayerFleche
                or layername == inNameLayerFond):
            cree_background(layercurrent, layerfond, inImg)

    cache = pdb.gimp_image_merge_visible_layers(inImg, CLIP_TO_IMAGE)
    pdb.script_fu_add_bevel(inImg, cache, 5, 0, 0)
    pdb.gimp_item_set_name(cache, "cache.png")

    pdb.gimp_image_lower_item_to_bottom(inImg, layerfleche)
    pdb.gimp_image_lower_item_to_bottom(inImg, cache)
    pdb.gimp_image_lower_item_to_bottom(inImg, layerfond)
def load_caches(args):
    inColorFondR, inColorFondG, inColorFondB, outDir = args.split(" ")
    inDir, inNameLayerFleche = GRAPH_PATH + "layers/", "layer_fleche-1.png"
    inColorFondR, inColorFondG, inColorFondB = int(inColorFondR), int(
        inColorFondG), int(inColorFondB)

    nb, listimg = pdb.file_glob(inDir + "*.png", 1)
    baseimage = pdb.gimp_image_new(10, 10, RGB)
    fondcolor = (inColorFondR, inColorFondG, inColorFondB)

    for filename in listimg:
        layer = pdb.gimp_file_load_layer(baseimage, filename)
        pdb.gimp_image_insert_layer(baseimage, layer, None, 0)

    pdb.gimp_image_resize_to_layers(baseimage)
    pdb.gimp_message("Layers chargés")
    pdb.gimp_selection_all(baseimage)

    layerfond = pdb.gimp_image_get_layers(baseimage)[1][0]
    layerfond = gimp.Item.from_id(layerfond)
    fond = pdb.gimp_layer_copy(layerfond, 1)
    _, _, _, xmax, ymax = pdb.gimp_selection_bounds(baseimage)

    pdb.gimp_item_set_name(fond, "layer_fond.png")
    pdb.gimp_image_insert_layer(baseimage, fond, None, 0)

    pdb.gimp_edit_clear(fond)
    pdb.gimp_image_select_round_rectangle(baseimage, CHANNEL_OP_REPLACE, 0, 0,
                                          xmax, ymax, 35, 35)
    pdb.gimp_selection_shrink(baseimage, 3)
    pdb.gimp_selection_feather(baseimage, 20)
    pdb.gimp_context_set_foreground(fondcolor)
    pdb.gimp_edit_fill(fond, FILL_FOREGROUND)
    pdb.gimp_image_lower_item_to_bottom(baseimage, fond)
    pdb.plug_in_hsv_noise(baseimage, fond, 5, 38, 63, 74)
    pdb.gimp_selection_none(baseimage)
    pdb.gimp_message("Fond créé")
    caches(baseimage, inNameLayerFleche, "layer_fond.png")
    pdb.gimp_message("Cache créé")

    layercache = pdb.gimp_image_get_layer_by_name(baseimage, "cache.png")
    layerfond = pdb.gimp_image_get_layer_by_name(baseimage, "layer_fond.png")
    layerfleche = pdb.gimp_image_get_layer_by_name(baseimage,
                                                   inNameLayerFleche)

    pdb.gimp_item_set_visible(layerfond, True)
    pdb.gimp_image_merge_down(baseimage, layercache, CLIP_TO_IMAGE)
    pdb.gimp_item_set_visible(layerfleche, True)
    pdb.gimp_image_merge_down(baseimage, layerfleche, CLIP_TO_IMAGE)

    pdb.gimp_image_scale(baseimage, 900, 550)
    # drawable = pdb.gimp_image_get_active_drawable(baseimage)
    pdb.script_fu_multiple_layer_actions(baseimage, None, 0, 0, (0, 0, 0), 4,
                                         0, 0, 0, 0, 0)
    pdb.gimp_message("Taille de l'image ajustée")

    pdb.script_fu_export_layers(baseimage, None, outDir, "~l")
    pdb.gimp_message("Layers enregistrés")
def cree_background(inLayer, inLayerF, Img):
    """Add background to inLayer"""
    newlayer = pdb.gimp_layer_copy(inLayer, True)
    newfond = pdb.gimp_layer_copy(inLayerF, True)
    layername = pdb.gimp_item_get_name(inLayer)

    pdb.gimp_item_set_visible(newlayer, True)
    pdb.gimp_image_insert_layer(Img, newlayer, None, 0)

    pdb.gimp_image_set_active_layer(Img, inLayer)
    pdb.gimp_image_insert_layer(Img, newfond, None, -1)
    pdb.gimp_image_lower_item(Img, newfond)
    pdb.gimp_item_set_visible(newfond, 1)

    pdb.gimp_context_set_sample_transparent(True)
    pdb.gimp_image_select_contiguous_color(Img, CHANNEL_OP_REPLACE, newlayer,
                                           10, 10)
    pdb.gimp_edit_clear(newfond)
    pdb.gimp_item_set_visible(inLayer, True)
    clipped_layer = pdb.gimp_image_merge_down(Img, inLayer, CLIP_TO_IMAGE)
    pdb.gimp_item_set_name(clipped_layer, layername)

    pdb.gimp_selection_invert(Img)
    pdb.gimp_context_set_foreground((117, 117, 154))
    pdb.gimp_edit_fill(newlayer, FILL_FOREGROUND)

    floating_sel = pdb.gimp_edit_paste(newlayer, 0)
    pdb.gimp_layer_set_opacity(floating_sel, 70)
    pdb.gimp_floating_sel_anchor(floating_sel)

    pdb.gimp_layer_set_opacity(newlayer, 85)
    pdb.gimp_selection_none(Img)

    layerfinal = pdb.gimp_image_get_layer_by_name(Img, layername)
    pdb.gimp_item_set_visible(layerfinal, False)
예제 #4
0
def add_text_layer(image, text, font, font_size, fontunit_index,
                   layer_position, antialias, font_color, indent,
                   justification, hintstyle, language, letter_spacing,
                   line_spacing, tlayer_width, tlayer_height, x_pos, y_pos):
    """Add text layer."""
    tlayer = pdb.gimp_text_layer_new(image, text, font,
                                     font_size, fontunit_index)

    pdb.gimp_image_add_layer(image, tlayer, layer_position)
    pdb.gimp_text_layer_set_antialias(tlayer, antialias)
    pdb.gimp_text_layer_set_color(tlayer, font_color)
    pdb.gimp_text_layer_set_indent(tlayer, indent)
    pdb.gimp_text_layer_set_justification(tlayer, justification)
    pdb.gimp_text_layer_set_hint_style(tlayer, hintstyle)
    pdb.gimp_text_layer_set_language(tlayer, language)
    pdb.gimp_text_layer_set_letter_spacing(tlayer, letter_spacing)
    pdb.gimp_text_layer_set_line_spacing(tlayer, line_spacing)

    pdb.gimp_text_layer_resize(tlayer, tlayer_width, tlayer_height)
    pdb.gimp_layer_set_offsets(tlayer, x_pos, y_pos)
    pdb.gimp_item_set_visible(tlayer, True)
def createTechIcons(timg, tdrawable,file,folder, outFolder,scaleTo):
  for fileName in os.listdir(folder):
    # backGroundImage=pdb.gimp_file_load(file, file)
    # backGroundLayer=backGroundImage.layers[0]
    if fileName[-4:]!=".dds":
      continue
    outFile=outFolder+"/"+"tech_"+fileName
    image=pdb.gimp_file_load(folder+"/"+fileName, folder+"/"+fileName)
    pdb.gimp_image_scale(image,scaleTo,scaleTo)
    pdb.gimp_image_resize(image,52,52,-1,-1)
    for layer in image.layers:
      pdb.gimp_layer_resize_to_image_size(layer)
    # layer_group = pdb.gimp_layer_group_new(image)
    layer_group=pdb.gimp_item_get_parent(image.layers[0])
    layer=pdb.gimp_file_load_layer(image, file)
    pdb.gimp_image_insert_layer(image,layer,layer_group,1)#(image, layer, parent, position)
    for layer in image.layers:
      pdb.gimp_item_set_visible(layer,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)
    # with open("E:/out.txt",'w') as outTxt:
    #   outTxt.write(outFile)
    pdb.file_dds_save(image, drawable, outFile,outFile,0,0,0,0,0,0,0)
예제 #6
0
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)