|
from PIL import Image |
|
import io |
|
import base64 |
|
import numpy as np |
|
|
|
def image_to_base64(image: Image.Image,format="JPEG") -> str: |
|
buffered = io.BytesIO() |
|
|
|
image.save(buffered, format=format) |
|
return base64.b64encode(buffered.getvalue()).decode("utf-8") |
|
|
|
def calculate_mask_area(mask: Image.Image, background=False) -> int: |
|
mask_array = np.array(mask) |
|
non_zero_pixels = np.count_nonzero(mask_array) |
|
return non_zero_pixels |
|
|
|
def process_image(input_image: Image.Image) -> Image.Image: |
|
if input_image.mode != 'RGBA': |
|
input_image = input_image.convert('RGBA') |
|
|
|
data = np.array(input_image) |
|
|
|
r, g, b, a = data.T |
|
|
|
|
|
black_areas = (r == 0) & (g == 0) & (b == 0) |
|
|
|
|
|
data[..., 3][black_areas] = 0 |
|
|
|
return Image.fromarray(data) |