def resize_lowres(file_path):
    filename = os.path.basename(file_path)
    filedir = os.path.dirname(file_path) + "/"
    # load file
    #debug_output("DEBUG: loading: " + file_path + "...")
    try:
        image = pdb.gimp_file_load(file_path, filename)
    except:
        try:
            image = pdb.file_tga_load(file_path, filename)
        except:
            debug_output("ERROR trying to load: " + file_path + ", skipping...")
            return -1
            #pdb.gimp_quit(-1)
    use_width = False
    width = image.width
    height = image.height
    if (width < height):
        shortlength = width
        use_width = True
    else:
        shortlength = height
    if (shortlength <= 64):
        debug_output("DEBUG: image dimensions too small: [" + str(width) + " x " + str(height) + "], no need to scale.")
        # continue with save step to optimize format (dxt1)
    else:
        shortlength = shortlength / 8
        if (shortlength < 64):
            shortlength = 64
        # resize shortest dimension to div8 or minimum 64
        if (use_width == True):
            ratio = float(shortlength) / float(width)
            longlength = int(height * ratio)
            #debug_output("DEBUG: scaling to: [" + str(shortlength) + " x " + str(longlength) + "]...")
            pdb.gimp_image_scale(image, shortlength, longlength)
        else:
            ratio = float(shortlength) / float(height)
            longlength = int(width * ratio)
            #debug_output("DEBUG: scaling to: [" + str(longlength) + " x " + str(shortlength) + "]...")
            pdb.gimp_image_scale(image, longlength, shortlength)
    # save
    debug_output("DEBUG: saving: " + file_path + "...")
    pdb.file_dds_save(image, image.active_layer, #image, drawyable/layer
                      file_path, filename, #filename, raw-filename
                      1, # compression: 0=none, 1=bc1/dxt1, 2=bc2/dxt3, 3=bc3/dxt5, 4=BC3n/dxt5nm, ... 8=alpha exponent... 
                      1, # mipmaps: 0=no mipmaps, 1=generate mipmaps, 2=use existing mipmaps(layers)
                      0, # savetype: 0=selected layer, 1=cube map, 2=volume map, 3=texture array
                      0, # format: 0=default, 1=R5G6B5, 2=RGBA4, 3=RGB5A1, 4=RGB10A2
                      -1, # transparent_index: -1 to disable (indexed images only)
                      0, # filter for generated mipmaps: 0=default, 1=nearest, 2=box, 3=triangle, 4=quadratic, 5=bspline, 6=mitchell, 7=lanczos, 8=kaiser
                      0, # wrap-mode for generated mipmaps: 0=default, 1=mirror, 2=repeat, 3=clamp
                      0, # gamma_correct: use gamma corrected mipmap filtering
                      0, # srgb: use sRGB colorspace for gamma correction
                      2.2, # gamma: gamma value used for gamma correction (ex: 2.2)
                      1, # perceptual_metric: use a perceptual error metric during compression
                      0, # preserve_alpha_coverage: preserve alpha test coverage for alpha channel maps
                      0) # alpha_test_threshold: alpha test threshold value for which alpha test coverage should be preserved
    fake_normalmap_file(filedir, filename)
    gimp.delete(image)
Beispiel #2
0
def resize_icons(dirname=""):
    debug_output("DEBUG: resize_icons() started...")
    if (dirname == ""):
        top_dir = output_dir + "menus/icons/"
    else:
        top_dir = dirname
    if os.path.exists(top_dir):
        debug_output("DEBUG: searching top_dir: " + top_dir + "...")
        for filename in os.listdir(top_dir):
            if os.path.isdir(top_dir + filename):
                # recurse down and do check below
                filename += "/"
                resize_icons(top_dir + filename)
                continue
            # load file
            #debug_output("DEBUG: loading: " + top_dir+filename + "...")
            try:
                image = pdb.gimp_file_load(top_dir + filename, filename)
            except:
                try:
                    image = pdb.file_tga_load(top_dir + filename, filename)
                except:
                    debug_output("ERROR trying to load: " + top_dir +
                                 filename + ", skipping...")
                    continue
            #debug_output("DEBUG: " + top_dir+filename + " loaded.")
            # check dimensions
            if (image.height != 64) or (image.width != 64):
                # resize to 64x64
                debug_output("DEBUG: scaling: " + top_dir + filename + "...")
                pdb.gimp_image_scale(image, 64, 64)
            else:
                debug_output("DEBUG: already 64x64: " + top_dir + filename)
                # continue with save step to optimize format (dxt1)
            # save
            debug_output("DEBUG: saving: " + top_dir + filename + "...")
            pdb.file_dds_save(
                image,
                image.active_layer,  #image, drawyable/layer
                top_dir + filename,
                filename,  #filename, raw-filename
                1,  # compression: 0=none, 1=bc1/dxt1, 2=bc2/dxt3, 3=bc3/dxt5, 4=BC3n/dxt5nm, ... 8=alpha exponent... 
                1,  # mipmaps: 0=no mipmaps, 1=generate mipmaps, 2=use existing mipmaps(layers)
                0,  # savetype: 0=selected layer, 1=cube map, 2=volume map, 3=texture array
                0,  # format: 0=default, 1=R5G6B5, 2=RGBA4, 3=RGB5A1, 4=RGB10A2
                -1,  # transparent_index: -1 to disable (indexed images only)
                0,  # filter for generated mipmaps: 0=default, 1=nearest, 2=box, 3=triangle, 4=quadratic, 5=bspline, 6=mitchell, 7=lanczos, 8=kaiser
                0,  # wrap-mode for generated mipmaps: 0=default, 1=mirror, 2=repeat, 3=clamp
                0,  # gamma_correct: use gamma corrected mipmap filtering
                0,  # srgb: use sRGB colorspace for gamma correction
                2.2,  # gamma: gamma value used for gamma correction (ex: 2.2)
                1,  # perceptual_metric: use a perceptual error metric during compression
                0,  # preserve_alpha_coverage: preserve alpha test coverage for alpha channel maps
                0
            )  # alpha_test_threshold: alpha test threshold value for which alpha test coverage should be preserved
            #debug_output("DEBUG: unloading: " + top_dir+filename)
            gimp.delete(image)