Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added signature photo to (transparent) png converter script. #71

Merged
merged 1 commit into from
Oct 4, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,15 @@ So far, the following projects have been integrated to this repo:
|[Gmail Mailing Script](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/mailing) |[mayank-kapur](https://github.com/kapurm17) |
|[Handwrting DNN recognizer](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Handwriting_Recognizer) |[Chris]() |
|[HTML Table to List](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/HTML_Table_to_List) | [Nitish Srivastava](https://github.com/nitish-iiitd)|
|[Image circle formatter](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Image-Circulator) |[Berk Gureken](https://github.com/bureken) |
|[Image circle formatter](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Image-Circulator) |[Berk Gureken](https://github.com/bureken) |
|[Image To PDF](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/images2pdf)|[msaoudallah](https://github.com/msaoudallah)|
|[Instadp Web Scrapper](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/InstadpShower)|[Psychiquest](https://github.com/psychiquest)|
|[Own IP locator](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Location_Of_Own_IP_Adress)|[Chris]()|
|[Port Scanner](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Port_Scanner)|[Plutoberth](https://github.com/Plutoberth)|
|[Python Algebra Solver](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Algebra-Solver)|[Sengxay Xayachack](https://github.com/frankxayachack)|
|[Random name generator](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Random_Names_Generator)| [Ayush Bhardwaj](https://github.com/hastagAB)|
|[Server Ping](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Ping_Server)|[prince]()|
|[Signature photo to PNG converter](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/signature2png)|[Rodolfo Ferro](https://github.com/RodolfoFerro)|
|[Simple Webpage Parser](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/SimpleWebpageParser)|[Nitish Srivastava](https://github.com/nitish-iiitd)|
|[Slideshare downloader](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/Slideshare-Downloader)|[Chris Goes](https://github.com/GhostofGoes)|
|[SMS your location](https://github.com/hastagAB/Awesome-Python-Scripts/tree/master/SmsYourLocation)|[prince]()|
Expand All @@ -63,14 +64,14 @@ Remember to star the repo if you love the scipts~ :wink:

## Contribuition Guidelines :
- Make a **separate folder** for your script.
- There shouldn't be any **spaces** between the names of the script. (Use underscore or dash Symbol)
- There shouldn't be any **spaces** between the names of the script. (Use underscore or dash Symbol)
- :x: Script One
- :heavy_check_mark: Script_One
- :heavy_check_mark: Script-One

- The Folder should contain the followings -
- Main Python Script,
- Main Python Script,
- Supporting files for the Script (If any)
- A separate `README.md` File with proper documentation.

- Feel Free to add your script in the [project's list](https://github.com/hastagAB/Awesome-Python-Scripts#what-do-we-have) above.
59 changes: 59 additions & 0 deletions signature2png/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Python signature editor

The present repo contains a Python script to process signature images, it returns a `png` image with transparent background containing only the signature.

## Setup

The Python PIL ([Python Image Library](http://pillow.readthedocs.io/en/latest/)) package with [Python 3](https://www.python.org/downloads/) is used in this repo.

To install PIL via pip:
```bash
pip install pillow
```

## Contents

The main script is [`signature.py`](https://github.com/RodolfoFerro/Signature/blob/master/scripts/signature.py), which contains a set of utility functions developed so far.

### Done so far

* Binarize your signature
* Remove background and make it transparent

### TODO

* Smooth image
* Image orientation
* Crop to get only signature

## Usage

The main script, [`signature.py`](https://github.com/RodolfoFerro/Signature/blob/master/scripts/signature.py) requires a set of parameters that are needed in the parser.

```bash
$ python signature.py -h
usage: signature.py [-h] -i INPUT [-o OUTPUT] [-th THRESHOLD]

optional arguments:
-h, --help show this help message and exit
-i INPUT, --input INPUT
Input image.
-o OUTPUT, --output OUTPUT
Output image.
-th THRESHOLD, --threshold THRESHOLD
```

An example to use this script is as follows:

```bash
$ python signature.py -i imgs/example.jpg -o imgs/result.png -th 190
```

### Results

<img src="https://raw.githubusercontent.com/RodolfoFerro/Signature/master/imgs/RudolfoAnaya.jpg" width="50%"><img src="https://raw.githubusercontent.com/RodolfoFerro/Signature/master/imgs/resultado.png" width="50%">

***

#### Reference to:
<https://github.com/RodolfoFerro/Signature>
Binary file added signature2png/imgs/example.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added signature2png/imgs/result.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
90 changes: 90 additions & 0 deletions signature2png/signature.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# ===============================================================
# Author: Rodolfo Ferro Pérez
# Email: [email protected]
# 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)