resize image using backend;add resize radio button
frontend resize image will reduce image quality
This commit is contained in:
@@ -40,21 +40,42 @@ def numpy_to_bytes(image_numpy: np.ndarray) -> bytes:
|
||||
return image_bytes
|
||||
|
||||
|
||||
def load_img(img_bytes, gray: bool = False, norm: bool = True):
|
||||
def load_img(img_bytes, gray: bool = False):
|
||||
nparr = np.frombuffer(img_bytes, np.uint8)
|
||||
if gray:
|
||||
np_img = cv2.imdecode(nparr, cv2.IMREAD_GRAYSCALE)[:, :, np.newaxis]
|
||||
np_img = cv2.imdecode(nparr, cv2.IMREAD_GRAYSCALE)
|
||||
else:
|
||||
np_img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
|
||||
np_img = cv2.cvtColor(np_img, cv2.COLOR_BGR2RGB)
|
||||
|
||||
if norm:
|
||||
np_img = np.transpose(np_img, (2, 0, 1))
|
||||
np_img = np_img.astype("float32") / 255
|
||||
np_img = cv2.imdecode(nparr, cv2.IMREAD_UNCHANGED)
|
||||
if len(np_img.shape) == 3 and np_img.shape[2] == 4:
|
||||
np_img = cv2.cvtColor(np_img, cv2.COLOR_BGRA2RGB)
|
||||
else:
|
||||
np_img = cv2.cvtColor(np_img, cv2.COLOR_BGR2RGB)
|
||||
|
||||
return np_img
|
||||
|
||||
|
||||
def norm_img(np_img):
|
||||
if len(np_img.shape) == 2:
|
||||
np_img = np_img[:, :, np.newaxis]
|
||||
np_img = np.transpose(np_img, (2, 0, 1))
|
||||
np_img = np_img.astype("float32") / 255
|
||||
return np_img
|
||||
|
||||
|
||||
def resize_max_size(
|
||||
np_img, size_limit: int, interpolation=cv2.INTER_CUBIC
|
||||
) -> np.ndarray:
|
||||
# Resize image's longer size to size_limit if longer size larger than size_limit
|
||||
h, w = np_img.shape[:2]
|
||||
if max(h, w) > size_limit:
|
||||
ratio = size_limit / max(h, w)
|
||||
new_w = int(w * ratio + 0.5)
|
||||
new_h = int(h * ratio + 0.5)
|
||||
return cv2.resize(np_img, dsize=(new_w, new_h), interpolation=interpolation)
|
||||
else:
|
||||
return np_img
|
||||
|
||||
|
||||
def pad_img_to_modulo(img, mod):
|
||||
channels, height, width = img.shape
|
||||
out_height = ceil_modulo(height, mod)
|
||||
|
||||
Reference in New Issue
Block a user