Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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())
Пример #4
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)