fix PIL exif rotate
This commit is contained in:
parent
4a9f2ab03c
commit
2fc1bf042a
@ -309,11 +309,12 @@ def decode_base64_to_image(
|
|||||||
image = Image.open(io.BytesIO(base64.b64decode(encoding)))
|
image = Image.open(io.BytesIO(base64.b64decode(encoding)))
|
||||||
|
|
||||||
alpha_channel = None
|
alpha_channel = None
|
||||||
infos = image.info
|
|
||||||
try:
|
try:
|
||||||
image = ImageOps.exif_transpose(image)
|
image = ImageOps.exif_transpose(image)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
# exif_transpose will remove exif rotate info,we must call image.info after exif_transpose
|
||||||
|
infos = image.info
|
||||||
|
|
||||||
if gray:
|
if gray:
|
||||||
image = image.convert("L")
|
image = image.convert("L")
|
||||||
@ -352,6 +353,29 @@ def concat_alpha_channel(rgb_np_img, alpha_channel) -> np.ndarray:
|
|||||||
return rgb_np_img
|
return rgb_np_img
|
||||||
|
|
||||||
|
|
||||||
|
def adjust_mask(mask: np.ndarray, kernel_size: int, operate):
|
||||||
|
# kernel_size = kernel_size*2+1
|
||||||
|
mask[mask >= 127] = 255
|
||||||
|
mask[mask < 127] = 0
|
||||||
|
# fronted brush color "ffcc00bb"
|
||||||
|
if operate == "expand":
|
||||||
|
mask = cv2.dilate(
|
||||||
|
mask,
|
||||||
|
np.ones((kernel_size, kernel_size), np.uint8),
|
||||||
|
iterations=1,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
mask = cv2.erode(
|
||||||
|
mask,
|
||||||
|
np.ones((kernel_size, kernel_size), np.uint8),
|
||||||
|
iterations=1,
|
||||||
|
)
|
||||||
|
res_mask = np.zeros((mask.shape[0], mask.shape[1], 4), dtype=np.uint8)
|
||||||
|
res_mask[mask > 128] = [255, 203, 0, int(255 * 0.73)]
|
||||||
|
res_mask = cv2.cvtColor(res_mask, cv2.COLOR_BGRA2RGBA)
|
||||||
|
return res_mask
|
||||||
|
|
||||||
|
|
||||||
def gen_frontend_mask(bgr_or_gray_mask):
|
def gen_frontend_mask(bgr_or_gray_mask):
|
||||||
if len(bgr_or_gray_mask.shape) == 3 and bgr_or_gray_mask.shape[2] != 1:
|
if len(bgr_or_gray_mask.shape) == 3 and bgr_or_gray_mask.shape[2] != 1:
|
||||||
bgr_or_gray_mask = cv2.cvtColor(bgr_or_gray_mask, cv2.COLOR_BGR2GRAY)
|
bgr_or_gray_mask = cv2.cvtColor(bgr_or_gray_mask, cv2.COLOR_BGR2GRAY)
|
||||||
|
@ -2,6 +2,7 @@ from typing import List, Dict
|
|||||||
|
|
||||||
import torch
|
import torch
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
from lama_cleaner.download import scan_models
|
from lama_cleaner.download import scan_models
|
||||||
from lama_cleaner.helper import switch_mps_device
|
from lama_cleaner.helper import switch_mps_device
|
||||||
@ -77,12 +78,12 @@ class ModelManager:
|
|||||||
config:
|
config:
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
BGR image
|
||||||
"""
|
"""
|
||||||
self.switch_controlnet_method(config)
|
self.switch_controlnet_method(config)
|
||||||
self.enable_disable_freeu(config)
|
self.enable_disable_freeu(config)
|
||||||
self.enable_disable_lcm_lora(config)
|
self.enable_disable_lcm_lora(config)
|
||||||
return self.model(image, mask, config)
|
return self.model(image, mask, config).astype(np.uint8)
|
||||||
|
|
||||||
def scan_models(self) -> List[ModelInfo]:
|
def scan_models(self) -> List[ModelInfo]:
|
||||||
available_models = scan_models()
|
available_models = scan_models()
|
||||||
|
Loading…
Reference in New Issue
Block a user