make-scanned/main.py
2023-11-28 16:26:51 +05:00

56 lines
3.5 KiB
Python

from wand.image import Image
from wand.drawing import Drawing
from wand.display import display
from random import randint
import os
import urllib.request
print("""
---------------------------------------------------------------------------------------------------
███╗ ███╗ █████╗ ██╗ ██╗███████╗ ███████╗ ██████╗ █████╗ ███╗ ██╗███╗ ██╗███████╗██████╗
████╗ ████║██╔══██╗██║ ██╔╝██╔════╝ ██╔════╝██╔════╝██╔══██╗████╗ ██║████╗ ██║██╔════╝██╔══██╗
██╔████╔██║███████║█████╔╝ █████╗ ███████╗██║ ███████║██╔██╗ ██║██╔██╗ ██║█████╗ ██║ ██║
██║╚██╔╝██║██╔══██║██╔═██╗ ██╔══╝ ╚════██║██║ ██╔══██║██║╚██╗██║██║╚██╗██║██╔══╝ ██║ ██║
██║ ╚═╝ ██║██║ ██║██║ ██╗███████╗ ███████║╚██████╗██║ ██║██║ ╚████║██║ ╚████║███████╗██████╔╝
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═══╝╚══════╝╚═════╝
by https://github.com/zinchenko291
---------------------------------------------------------------------------------------------------
""")
if not 'input' in os.listdir():
os.mkdir('./input')
if not 'output' in os.listdir():
os.mkdir('./output')
else:
outlist = os.listdir('output/')
for i in outlist:
os.remove(f'output/{i}')
if not 'scanner.png' in os.listdir():
url = 'https://www.canon.ru/media/scanners_range_tcm203-1266210.png'
response = urllib.request.urlopen(url)
img = response.read()
with open('scanner.png', 'wb') as f:
f.write(img)
inputs = os.listdir('input/')
back = Image(filename='scanner.png')
print(f'Изображений в папке: {len(inputs)}.\nНачинаю работу.')
for key, i in enumerate(inputs):
with Image(filename=f'input/{i}') as img:
img.colorize(color="blue", alpha="rgb(0%, 0%, 10%)")
img.rotate(randint(-10, 10)/10)
img.gamma(0.8)
img.linear_stretch(black_point=0.035, white_point=0.1)
img.blur(radius=0, sigma=0.5)
img.noise("laplacian", attenuate=0.5)
w = img.clone()
r = back.clone()
with Drawing() as draw:
draw.composite('color_burn', 0, 0, r.width, r.height, r)
draw(w)
w.save(filename=f'output/{i}')
print(f'\rПрогресс: [{"="*int((key + 1) / len(inputs) * 50)}{"-"*int(50 - (key + 1) / len(inputs) * 50)}] {int((key + 1) / len(inputs) * 100)}% | {key + 1}/{len(inputs)}', end='')
pass
print('\nРабота выполнена.')