|
import os |
|
import requests |
|
import random |
|
import _thread as thread |
|
from uuid import uuid4 |
|
import urllib |
|
|
|
import numpy as np |
|
import skimage |
|
from skimage.filters import gaussian |
|
from PIL import Image |
|
|
|
def compress_image(image, path_original): |
|
size = 1920, 1080 |
|
width = 1920 |
|
height = 1080 |
|
|
|
name = os.path.basename(path_original).split('.') |
|
first_name = os.path.join(os.path.dirname(path_original), name[0] + '.jpg') |
|
|
|
if image.size[0] > width and image.size[1] > height: |
|
image.thumbnail(size, Image.ANTIALIAS) |
|
image.save(first_name, quality=85) |
|
elif image.size[0] > width: |
|
wpercent = (width/float(image.size[0])) |
|
height = int((float(image.size[1])*float(wpercent))) |
|
image = image.resize((width,height), Image.ANTIALIAS) |
|
image.save(first_name,quality=85) |
|
elif image.size[1] > height: |
|
wpercent = (height/float(image.size[1])) |
|
width = int((float(image.size[0])*float(wpercent))) |
|
image = image.resize((width,height), Image.ANTIALIAS) |
|
image.save(first_name, quality=85) |
|
else: |
|
image.save(first_name, quality=85) |
|
|
|
|
|
def convertToJPG(path_original): |
|
img = Image.open(path_original) |
|
name = os.path.basename(path_original).split('.') |
|
first_name = os.path.join(os.path.dirname(path_original), name[0] + '.jpg') |
|
|
|
if img.format == "JPEG": |
|
image = img.convert('RGB') |
|
compress_image(image, path_original) |
|
img.close() |
|
|
|
elif img.format == "GIF": |
|
i = img.convert("RGBA") |
|
bg = Image.new("RGBA", i.size) |
|
image = Image.composite(i, bg, i) |
|
compress_image(image, path_original) |
|
img.close() |
|
|
|
elif img.format == "PNG": |
|
try: |
|
image = Image.new("RGB", img.size, (255,255,255)) |
|
image.paste(img,img) |
|
compress_image(image, path_original) |
|
except ValueError: |
|
image = img.convert('RGB') |
|
compress_image(image, path_original) |
|
|
|
img.close() |
|
|
|
elif img.format == "BMP": |
|
image = img.convert('RGB') |
|
compress_image(image, path_original) |
|
img.close() |
|
|
|
|
|
|
|
def blur(image, x0, x1, y0, y1, sigma=1, multichannel=True): |
|
y0, y1 = min(y0, y1), max(y0, y1) |
|
x0, x1 = min(x0, x1), max(x0, x1) |
|
im = image.copy() |
|
sub_im = im[y0:y1,x0:x1].copy() |
|
blur_sub_im = gaussian(sub_im, sigma=sigma, multichannel=multichannel) |
|
blur_sub_im = np.round(255 * blur_sub_im) |
|
im[y0:y1,x0:x1] = blur_sub_im |
|
return im |
|
|
|
|
|
|
|
def download(url, filename): |
|
data = requests.get(url).content |
|
with open(filename, 'wb') as handler: |
|
handler.write(data) |
|
|
|
return filename |
|
|
|
|
|
def generate_random_filename(upload_directory, extension): |
|
filename = str(uuid4()) |
|
filename = os.path.join(upload_directory, filename + "." + extension) |
|
return filename |
|
|
|
|
|
def clean_me(filename): |
|
if os.path.exists(filename): |
|
os.remove(filename) |
|
|
|
|
|
def clean_all(files): |
|
for me in files: |
|
clean_me(me) |
|
|
|
|
|
def create_directory(path): |
|
os.makedirs(os.path.dirname(path), exist_ok=True) |
|
|
|
|
|
def get_model_bin(url, output_path): |
|
|
|
if not os.path.exists(output_path): |
|
create_directory(output_path) |
|
|
|
urllib.request.urlretrieve(url, output_path) |
|
|
|
|
|
|
|
|
|
|
|
return output_path |
|
|
|
|
|
|
|
def get_multi_model_bin(model_list): |
|
for m in model_list: |
|
thread.start_new_thread(get_model_bin, m) |
|
|
|
|