# =============================================================== # Author: Rodolfo Ferro PĂ©rez # Email: ferro@cimat.mx # Twitter: @FerroRodolfo # # Script: Process signatures to remove background. # # ABOUT COPYING OR USING PARTIAL INFORMATION: # This script was originally created by Rodolfo Ferro. Any # explicit usage of this script or its contents is granted # according to the license provided and its conditions. # =============================================================== from PIL import Image, ImageOps import argparse inFile = '' outFile = '' def binarize(img, threshold=127): """Utility function to binarize an image.""" for i in range(img.size[0]): for j in range(img.size[1]): if img.getpixel((i, j)) > threshold: img.putpixel((i, j), 255) else: img.putpixel((i, j), 0) return img def make_transparent(img): """Utility function to make transparent background from image.""" img = img.convert("RGBA") data = img.getdata() transparent = [] for item in data: if item[:3] == (255, 255, 255): transparent.append((255, 255, 255, 0)) else: transparent.append(item) img.putdata(transparent) return img def main(inFile, outFile, threshold=190): """Main function to process image.""" img = Image.open(inFile).convert('L') img = binarize(img, threshold=threshold) img = make_transparent(img) img.save(outFile) return True def parser(): """Argument parser function.""" # Construct the argument parser: ap = argparse.ArgumentParser() ap.add_argument("-i", "--input", required=True, type=str, default="result.png", help="Input image.") ap.add_argument("-o", "--output", type=str, default="result.png", help="Output image.") ap.add_argument("-th", "--threshold", type=int, default=127) args = vars(ap.parse_args()) return args['input'], args['output'], args['threshold'] if __name__ == "__main__": inFile, outFile, threshold = parser() main(inFile, outFile, threshold=threshold)