feat 修改design的print逻辑 使 overall 和 single 同时存在
fix
This commit is contained in:
@@ -88,99 +88,112 @@ class PrintPainting(object):
|
|||||||
|
|
||||||
# @ RunTime
|
# @ RunTime
|
||||||
def __call__(self, result):
|
def __call__(self, result):
|
||||||
|
single_print = result['print']['single']
|
||||||
|
overall_print = result['print']['overall']
|
||||||
|
element_print = result['print']['element']
|
||||||
|
|
||||||
if "location" not in result['print'].keys():
|
if overall_print['print_path_list']:
|
||||||
result['print']["location"] = [[0, 0]]
|
painting_dict = {'dim_image_h': result['pattern_image'].shape[0], 'dim_image_w': result['pattern_image'].shape[1]}
|
||||||
elif result['print']["location"] == [] or result['print']["location"] is None:
|
result['print_image'] = result['pattern_image']
|
||||||
result['print']["location"] = [[0, 0]]
|
if "print_angle_list" in overall_print.keys() and overall_print['print_angle_list'][0] != 0:
|
||||||
if result['print']['IfSingle']:
|
painting_dict = self.painting_collection(painting_dict, overall_print, print_trigger=True)
|
||||||
if len(result['print']['print_path_list']) > 0:
|
painting_dict['tile_print'] = self.rotate_crop_image(img=painting_dict['tile_print'], angle=-result['print']['print_angle_list'][0], crop=True)
|
||||||
print_background = np.zeros((result['pattern_image'].shape[0], result['pattern_image'].shape[1], 3), dtype=np.uint8)
|
painting_dict['mask_inv_print'] = self.rotate_crop_image(img=painting_dict['mask_inv_print'], angle=-result['print']['print_angle_list'][0], crop=True)
|
||||||
mask_background = np.zeros((result['pattern_image'].shape[0], result['pattern_image'].shape[1], 3), dtype=np.uint8)
|
|
||||||
# print_background = np.full((result['pattern_image'].shape[0], result['pattern_image'].shape[1], 3), 255, dtype=np.uint8)
|
|
||||||
for i in range(len(result['print']['print_path_list'])):
|
|
||||||
image, image_mode = self.read_image(result['print']['print_path_list'][i])
|
|
||||||
if image_mode == "RGBA":
|
|
||||||
new_size = (int(image.width * result['print']['print_scale_list'][i]), int(image.height * result['print']['print_scale_list'][i]))
|
|
||||||
|
|
||||||
mask = image.split()[3]
|
# resize 到sketch大小
|
||||||
resized_source = image.resize(new_size)
|
painting_dict['tile_print'] = self.resize_and_crop(img=painting_dict['tile_print'], target_width=painting_dict['dim_image_w'], target_height=painting_dict['dim_image_h'])
|
||||||
resized_source_mask = mask.resize(new_size)
|
painting_dict['mask_inv_print'] = self.resize_and_crop(img=painting_dict['mask_inv_print'], target_width=painting_dict['dim_image_w'], target_height=painting_dict['dim_image_h'])
|
||||||
|
else:
|
||||||
|
painting_dict = self.painting_collection(painting_dict, overall_print, print_trigger=True, is_single=False)
|
||||||
|
result['print_image'] = self.printpaint(result, painting_dict, print_=True)
|
||||||
|
result['single_image'] = result['pattern_image'] = result['print_image']
|
||||||
|
|
||||||
rotated_resized_source = resized_source.rotate(-result['print']['print_angle_list'][i])
|
if single_print['print_path_list']:
|
||||||
rotated_resized_source_mask = resized_source_mask.rotate(-result['print']['print_angle_list'][i])
|
print_background = np.zeros((result['pattern_image'].shape[0], result['pattern_image'].shape[1], 3), dtype=np.uint8)
|
||||||
|
mask_background = np.zeros((result['pattern_image'].shape[0], result['pattern_image'].shape[1], 3), dtype=np.uint8)
|
||||||
|
for i in range(len(single_print['print_path_list'])):
|
||||||
|
image, image_mode = self.read_image(single_print['print_path_list'][i])
|
||||||
|
if image_mode == "RGBA":
|
||||||
|
new_size = (int(image.width * single_print['print_scale_list'][i]), int(image.height * single_print['print_scale_list'][i]))
|
||||||
|
|
||||||
source_image_pil = Image.fromarray(cv2.cvtColor(print_background, cv2.COLOR_BGR2RGB))
|
mask = image.split()[3]
|
||||||
source_image_pil_mask = Image.fromarray(cv2.cvtColor(mask_background, cv2.COLOR_BGR2RGB))
|
resized_source = image.resize(new_size)
|
||||||
|
resized_source_mask = mask.resize(new_size)
|
||||||
|
|
||||||
source_image_pil.paste(rotated_resized_source, (int(result['print']['location'][i][0]), int(result['print']['location'][i][1])), rotated_resized_source)
|
rotated_resized_source = resized_source.rotate(-single_print['print_angle_list'][i])
|
||||||
source_image_pil_mask.paste(rotated_resized_source_mask, (int(result['print']['location'][i][0]), int(result['print']['location'][i][1])), rotated_resized_source_mask)
|
rotated_resized_source_mask = resized_source_mask.rotate(-single_print['print_angle_list'][i])
|
||||||
|
|
||||||
print_background = cv2.cvtColor(np.array(source_image_pil), cv2.COLOR_RGBA2BGR)
|
source_image_pil = Image.fromarray(cv2.cvtColor(print_background, cv2.COLOR_BGR2RGB))
|
||||||
mask_background = cv2.cvtColor(np.array(source_image_pil_mask), cv2.COLOR_RGBA2BGR)
|
source_image_pil_mask = Image.fromarray(cv2.cvtColor(mask_background, cv2.COLOR_BGR2RGB))
|
||||||
ret, mask_background = cv2.threshold(mask_background, 124, 255, cv2.THRESH_BINARY)
|
|
||||||
|
source_image_pil.paste(rotated_resized_source, (int(single_print['location'][i][0]), int(single_print['location'][i][1])), rotated_resized_source)
|
||||||
|
source_image_pil_mask.paste(rotated_resized_source_mask, (int(single_print['location'][i][0]), int(single_print['location'][i][1])), rotated_resized_source_mask)
|
||||||
|
|
||||||
|
print_background = cv2.cvtColor(np.array(source_image_pil), cv2.COLOR_RGBA2BGR)
|
||||||
|
mask_background = cv2.cvtColor(np.array(source_image_pil_mask), cv2.COLOR_RGBA2BGR)
|
||||||
|
ret, mask_background = cv2.threshold(mask_background, 124, 255, cv2.THRESH_BINARY)
|
||||||
|
else:
|
||||||
|
mask = self.get_mask_inv(image)
|
||||||
|
mask = np.expand_dims(mask, axis=2)
|
||||||
|
mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
|
||||||
|
mask = cv2.bitwise_not(mask)
|
||||||
|
# 旋转后的坐标需要重新算
|
||||||
|
rotate_mask, _ = self.img_rotate(mask, single_print['print_angle_list'][i], single_print['print_scale_list'][i])
|
||||||
|
rotate_image, rotated_new_size = self.img_rotate(image, single_print['print_angle_list'][i], single_print['print_scale_list'][i])
|
||||||
|
# x, y = int(result['print']['location'][i][0] - rotated_new_size[0] - (rotate_mask.shape[0] - image.shape[0]) / 2), int(result['print']['location'][i][1] - rotated_new_size[1] - (rotate_mask.shape[1] - image.shape[1]) / 2)
|
||||||
|
x, y = int(single_print['location'][i][0] - rotated_new_size[0]), int(single_print['location'][i][1] - rotated_new_size[1])
|
||||||
|
|
||||||
|
image_x = print_background.shape[1]
|
||||||
|
image_y = print_background.shape[0]
|
||||||
|
print_x = rotate_image.shape[1]
|
||||||
|
print_y = rotate_image.shape[0]
|
||||||
|
|
||||||
|
# 有bug
|
||||||
|
# if x + print_x > image_x:
|
||||||
|
# rotate_image = rotate_image[:, :x + print_x - image_x]
|
||||||
|
# rotate_mask = rotate_mask[:, :x + print_x - image_x]
|
||||||
|
# #
|
||||||
|
# if y + print_y > image_y:
|
||||||
|
# rotate_image = rotate_image[:y + print_y - image_y]
|
||||||
|
# rotate_mask = rotate_mask[:y + print_y - image_y]
|
||||||
|
|
||||||
|
# 不能是并行
|
||||||
|
# 当前第一轮的if (108以及115)是判断有没有过下界和右界。第二轮的是判断左上有没有超出。 如果这个样子的话,先裁了右边,再左移,region就会有问题
|
||||||
|
# 先挪 再判断 最后裁剪
|
||||||
|
|
||||||
|
# 如果print旋转了 或者 print贴边了 则需要判断 判断左界和上界是否小于0
|
||||||
|
if x <= 0:
|
||||||
|
rotate_image = rotate_image[:, -x:]
|
||||||
|
rotate_mask = rotate_mask[:, -x:]
|
||||||
|
start_x = x = 0
|
||||||
else:
|
else:
|
||||||
mask = self.get_mask_inv(image)
|
start_x = x
|
||||||
mask = np.expand_dims(mask, axis=2)
|
|
||||||
mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
|
|
||||||
mask = cv2.bitwise_not(mask)
|
|
||||||
# 旋转后的坐标需要重新算
|
|
||||||
rotate_mask, _ = self.img_rotate(mask, result['print']['print_angle_list'][i], result['print']['print_scale_list'][i])
|
|
||||||
rotate_image, rotated_new_size = self.img_rotate(image, result['print']['print_angle_list'][i], result['print']['print_scale_list'][i])
|
|
||||||
# x, y = int(result['print']['location'][i][0] - rotated_new_size[0] - (rotate_mask.shape[0] - image.shape[0]) / 2), int(result['print']['location'][i][1] - rotated_new_size[1] - (rotate_mask.shape[1] - image.shape[1]) / 2)
|
|
||||||
x, y = int(result['print']['location'][i][0] - rotated_new_size[0]), int(result['print']['location'][i][1] - rotated_new_size[1])
|
|
||||||
|
|
||||||
image_x = print_background.shape[1]
|
if y <= 0:
|
||||||
image_y = print_background.shape[0]
|
rotate_image = rotate_image[-y:, :]
|
||||||
print_x = rotate_image.shape[1]
|
rotate_mask = rotate_mask[-y:, :]
|
||||||
print_y = rotate_image.shape[0]
|
start_y = y = 0
|
||||||
|
else:
|
||||||
|
start_y = y
|
||||||
|
|
||||||
# 有bug
|
# ------------------
|
||||||
# if x + print_x > image_x:
|
# 如果print-size大于image-size 则需要裁剪print
|
||||||
# rotate_image = rotate_image[:, :x + print_x - image_x]
|
|
||||||
# rotate_mask = rotate_mask[:, :x + print_x - image_x]
|
|
||||||
# #
|
|
||||||
# if y + print_y > image_y:
|
|
||||||
# rotate_image = rotate_image[:y + print_y - image_y]
|
|
||||||
# rotate_mask = rotate_mask[:y + print_y - image_y]
|
|
||||||
|
|
||||||
# 不能是并行
|
if x + print_x > image_x:
|
||||||
# 当前第一轮的if (108以及115)是判断有没有过下界和右界。第二轮的是判断左上有没有超出。 如果这个样子的话,先裁了右边,再左移,region就会有问题
|
rotate_image = rotate_image[:, :image_x - x]
|
||||||
# 先挪 再判断 最后裁剪
|
rotate_mask = rotate_mask[:, :image_x - x]
|
||||||
|
|
||||||
# 如果print旋转了 或者 print贴边了 则需要判断 判断左界和上界是否小于0
|
if y + print_y > image_y:
|
||||||
if x <= 0:
|
rotate_image = rotate_image[:image_y - y, :]
|
||||||
rotate_image = rotate_image[:, -x:]
|
rotate_mask = rotate_mask[:image_y - y, :]
|
||||||
rotate_mask = rotate_mask[:, -x:]
|
|
||||||
start_x = x = 0
|
|
||||||
else:
|
|
||||||
start_x = x
|
|
||||||
|
|
||||||
if y <= 0:
|
# mask_background[start_y:y + rotate_mask.shape[0], start_x:x + rotate_mask.shape[1]] = cv2.bitwise_xor(mask_background[start_y:y + rotate_mask.shape[0], start_x:x + rotate_mask.shape[1]], rotate_mask)
|
||||||
rotate_image = rotate_image[-y:, :]
|
# print_background[start_y:y + rotate_image.shape[0], start_x:x + rotate_image.shape[1]] = cv2.add(print_background[start_y:y + rotate_image.shape[0], start_x:x + rotate_image.shape[1]], rotate_image)
|
||||||
rotate_mask = rotate_mask[-y:, :]
|
|
||||||
start_y = y = 0
|
|
||||||
else:
|
|
||||||
start_y = y
|
|
||||||
|
|
||||||
# ------------------
|
# mask_background[start_y:y + rotate_mask.shape[0], start_x:x + rotate_mask.shape[1]] = rotate_mask
|
||||||
# 如果print-size大于image-size 则需要裁剪print
|
# print_background[start_y:y + rotate_image.shape[0], start_x:x + rotate_image.shape[1]] = rotate_image
|
||||||
|
mask_background = self.stack_prin(mask_background, result['pattern_image'], rotate_mask, start_y, y, start_x, x)
|
||||||
if x + print_x > image_x:
|
print_background = self.stack_prin(print_background, result['pattern_image'], rotate_image, start_y, y, start_x, x)
|
||||||
rotate_image = rotate_image[:, :image_x - x]
|
|
||||||
rotate_mask = rotate_mask[:, :image_x - x]
|
|
||||||
|
|
||||||
if y + print_y > image_y:
|
|
||||||
rotate_image = rotate_image[:image_y - y, :]
|
|
||||||
rotate_mask = rotate_mask[:image_y - y, :]
|
|
||||||
|
|
||||||
# mask_background[start_y:y + rotate_mask.shape[0], start_x:x + rotate_mask.shape[1]] = cv2.bitwise_xor(mask_background[start_y:y + rotate_mask.shape[0], start_x:x + rotate_mask.shape[1]], rotate_mask)
|
|
||||||
# print_background[start_y:y + rotate_image.shape[0], start_x:x + rotate_image.shape[1]] = cv2.add(print_background[start_y:y + rotate_image.shape[0], start_x:x + rotate_image.shape[1]], rotate_image)
|
|
||||||
|
|
||||||
# mask_background[start_y:y + rotate_mask.shape[0], start_x:x + rotate_mask.shape[1]] = rotate_mask
|
|
||||||
# print_background[start_y:y + rotate_image.shape[0], start_x:x + rotate_image.shape[1]] = rotate_image
|
|
||||||
mask_background = self.stack_prin(mask_background, result['pattern_image'], rotate_mask, start_y, y, start_x, x)
|
|
||||||
print_background = self.stack_prin(print_background, result['pattern_image'], rotate_image, start_y, y, start_x, x)
|
|
||||||
|
|
||||||
# gray_image = cv2.cvtColor(mask_background, cv2.COLOR_BGR2GRAY)
|
# gray_image = cv2.cvtColor(mask_background, cv2.COLOR_BGR2GRAY)
|
||||||
# print_background = cv2.bitwise_and(print_background, print_background, mask=gray_image)
|
# print_background = cv2.bitwise_and(print_background, print_background, mask=gray_image)
|
||||||
@@ -198,54 +211,27 @@ class PrintPainting(object):
|
|||||||
temp_fg = np.expand_dims(result['mask'], axis=2).repeat(3, axis=2)
|
temp_fg = np.expand_dims(result['mask'], axis=2).repeat(3, axis=2)
|
||||||
tmp2 = (result['final_image'] * (temp_fg / 255)).astype(np.uint8)
|
tmp2 = (result['final_image'] * (temp_fg / 255)).astype(np.uint8)
|
||||||
result['single_image'] = cv2.add(tmp1, tmp2)
|
result['single_image'] = cv2.add(tmp1, tmp2)
|
||||||
else:
|
|
||||||
painting_dict = {}
|
|
||||||
painting_dict['dim_image_h'], painting_dict['dim_image_w'] = result['pattern_image'].shape[0:2]
|
|
||||||
|
|
||||||
# no print
|
if element_print['element_path_list']:
|
||||||
if len(result['print_dict']['print_path_list']) == 0 or not self.print_flag:
|
|
||||||
result['print_image'] = result['pattern_image']
|
|
||||||
# print
|
|
||||||
else:
|
|
||||||
if "print_angle_list" in result['print'].keys() and result['print']['print_angle_list'][0] != 0:
|
|
||||||
painting_dict = self.painting_collection(painting_dict, result, print_trigger=True)
|
|
||||||
painting_dict['tile_print'] = self.rotate_crop_image(img=painting_dict['tile_print'], angle=-result['print']['print_angle_list'][0], crop=True)
|
|
||||||
painting_dict['mask_inv_print'] = self.rotate_crop_image(img=painting_dict['mask_inv_print'], angle=-result['print']['print_angle_list'][0], crop=True)
|
|
||||||
|
|
||||||
# resize 到sketch大小
|
|
||||||
painting_dict['tile_print'] = self.resize_and_crop(img=painting_dict['tile_print'], target_width=painting_dict['dim_image_w'], target_height=painting_dict['dim_image_h'])
|
|
||||||
painting_dict['mask_inv_print'] = self.resize_and_crop(img=painting_dict['mask_inv_print'], target_width=painting_dict['dim_image_w'], target_height=painting_dict['dim_image_h'])
|
|
||||||
else:
|
|
||||||
painting_dict = self.painting_collection(painting_dict, result, print_trigger=True)
|
|
||||||
result['print_image'] = self.printpaint(result, painting_dict, print_=True)
|
|
||||||
result['final_image'] = result['print_image']
|
|
||||||
canvas = np.full_like(result['final_image'], 255)
|
|
||||||
temp_bg = np.expand_dims(cv2.bitwise_not(result['mask']), axis=2).repeat(3, axis=2)
|
|
||||||
tmp1 = (canvas * (temp_bg / 255)).astype(np.uint8)
|
|
||||||
temp_fg = np.expand_dims(result['mask'], axis=2).repeat(3, axis=2)
|
|
||||||
tmp2 = (result['final_image'] * (temp_fg / 255)).astype(np.uint8)
|
|
||||||
result['single_image'] = cv2.add(tmp1, tmp2)
|
|
||||||
|
|
||||||
if "element" in result.keys():
|
|
||||||
print_background = np.zeros((result['final_image'].shape[0], result['final_image'].shape[1], 3), dtype=np.uint8)
|
print_background = np.zeros((result['final_image'].shape[0], result['final_image'].shape[1], 3), dtype=np.uint8)
|
||||||
mask_background = np.zeros((result['final_image'].shape[0], result['final_image'].shape[1], 3), dtype=np.uint8)
|
mask_background = np.zeros((result['final_image'].shape[0], result['final_image'].shape[1], 3), dtype=np.uint8)
|
||||||
for i in range(len(result['element']['element_path_list'])):
|
for i in range(len(element_print['element_path_list'])):
|
||||||
image, image_mode = self.read_image(result['element']['element_path_list'][i])
|
image, image_mode = self.read_image(element_print['element_path_list'][i])
|
||||||
if image_mode == "RGBA":
|
if image_mode == "RGBA":
|
||||||
new_size = (int(image.width * result['element']['element_scale_list'][i]), int(image.height * result['element']['element_scale_list'][i]))
|
new_size = (int(image.width * element_print['element_scale_list'][i]), int(image.height * element_print['element_scale_list'][i]))
|
||||||
|
|
||||||
mask = image.split()[3]
|
mask = image.split()[3]
|
||||||
resized_source = image.resize(new_size)
|
resized_source = image.resize(new_size)
|
||||||
resized_source_mask = mask.resize(new_size)
|
resized_source_mask = mask.resize(new_size)
|
||||||
|
|
||||||
rotated_resized_source = resized_source.rotate(-result['element']['element_angle_list'][i])
|
rotated_resized_source = resized_source.rotate(-element_print['element_angle_list'][i])
|
||||||
rotated_resized_source_mask = resized_source_mask.rotate(-result['element']['element_angle_list'][i])
|
rotated_resized_source_mask = resized_source_mask.rotate(-element_print['element_angle_list'][i])
|
||||||
|
|
||||||
source_image_pil = Image.fromarray(cv2.cvtColor(print_background, cv2.COLOR_BGR2RGB))
|
source_image_pil = Image.fromarray(cv2.cvtColor(print_background, cv2.COLOR_BGR2RGB))
|
||||||
source_image_pil_mask = Image.fromarray(cv2.cvtColor(mask_background, cv2.COLOR_BGR2RGB))
|
source_image_pil_mask = Image.fromarray(cv2.cvtColor(mask_background, cv2.COLOR_BGR2RGB))
|
||||||
|
|
||||||
source_image_pil.paste(rotated_resized_source, (int(result['element']['location'][i][0]), int(result['element']['location'][i][1])), rotated_resized_source)
|
source_image_pil.paste(rotated_resized_source, (int(element_print['location'][i][0]), int(element_print['location'][i][1])), rotated_resized_source)
|
||||||
source_image_pil_mask.paste(rotated_resized_source_mask, (int(result['element']['location'][i][0]), int(result['element']['location'][i][1])), rotated_resized_source_mask)
|
source_image_pil_mask.paste(rotated_resized_source_mask, (int(element_print['location'][i][0]), int(element_print['location'][i][1])), rotated_resized_source_mask)
|
||||||
|
|
||||||
print_background = cv2.cvtColor(np.array(source_image_pil), cv2.COLOR_RGBA2BGR)
|
print_background = cv2.cvtColor(np.array(source_image_pil), cv2.COLOR_RGBA2BGR)
|
||||||
mask_background = cv2.cvtColor(np.array(source_image_pil_mask), cv2.COLOR_RGBA2BGR)
|
mask_background = cv2.cvtColor(np.array(source_image_pil_mask), cv2.COLOR_RGBA2BGR)
|
||||||
@@ -256,10 +242,10 @@ class PrintPainting(object):
|
|||||||
mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
|
mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
|
||||||
mask = cv2.bitwise_not(mask)
|
mask = cv2.bitwise_not(mask)
|
||||||
# 旋转后的坐标需要重新算
|
# 旋转后的坐标需要重新算
|
||||||
rotate_mask, _ = self.img_rotate(mask, result['element']['element_angle_list'][i], result['element']['element_scale_list'][i])
|
rotate_mask, _ = self.img_rotate(mask, element_print['element_angle_list'][i], element_print['element_scale_list'][i])
|
||||||
rotate_image, rotated_new_size = self.img_rotate(image, result['element']['element_angle_list'][i], result['element']['element_scale_list'][i])
|
rotate_image, rotated_new_size = self.img_rotate(image, element_print['element_angle_list'][i], element_print['element_scale_list'][i])
|
||||||
# x, y = int(result['print']['location'][i][0] - rotated_new_size[0] - (rotate_mask.shape[0] - image.shape[0]) / 2), int(result['print']['location'][i][1] - rotated_new_size[1] - (rotate_mask.shape[1] - image.shape[1]) / 2)
|
# x, y = int(result['print']['location'][i][0] - rotated_new_size[0] - (rotate_mask.shape[0] - image.shape[0]) / 2), int(result['print']['location'][i][1] - rotated_new_size[1] - (rotate_mask.shape[1] - image.shape[1]) / 2)
|
||||||
x, y = int(result['element']['location'][i][0] - rotated_new_size[0]), int(result['element']['location'][i][1] - rotated_new_size[1])
|
x, y = int(element_print['location'][i][0] - rotated_new_size[0]), int(element_print['location'][i][1] - rotated_new_size[1])
|
||||||
|
|
||||||
image_x = print_background.shape[1]
|
image_x = print_background.shape[1]
|
||||||
image_y = print_background.shape[0]
|
image_y = print_background.shape[0]
|
||||||
@@ -353,18 +339,18 @@ class PrintPainting(object):
|
|||||||
|
|
||||||
return print_background
|
return print_background
|
||||||
|
|
||||||
def painting_collection(self, painting_dict, result, print_trigger=False):
|
def painting_collection(self, painting_dict, print_dict, print_trigger=False, is_single=False):
|
||||||
if print_trigger:
|
if print_trigger:
|
||||||
print_ = self.get_print(result['print_dict'])
|
print_ = self.get_print(print_dict)
|
||||||
painting_dict['Trigger'] = not print_['IfSingle']
|
painting_dict['Trigger'] = not is_single
|
||||||
painting_dict['location'] = print_['location'] if 'location' in print_.keys() else None
|
painting_dict['location'] = print_['location']
|
||||||
single_mask_inv_print = self.get_mask_inv(print_['image'])
|
single_mask_inv_print = self.get_mask_inv(print_['image'])
|
||||||
dim_max = max(painting_dict['dim_image_h'], painting_dict['dim_image_w'])
|
dim_max = max(painting_dict['dim_image_h'], painting_dict['dim_image_w'])
|
||||||
dim_pattern = (int(dim_max * print_['scale'] / 5), int(dim_max * print_['scale'] / 5))
|
dim_pattern = (int(dim_max * print_['scale'] / 5), int(dim_max * print_['scale'] / 5))
|
||||||
if not print_['IfSingle']:
|
if not is_single:
|
||||||
self.random_seed = random.randint(0, 1000)
|
self.random_seed = random.randint(0, 1000)
|
||||||
# 如果print 模式为overall 且 有角度的话 , 组合的print为正方形,方便裁剪
|
# 如果print 模式为overall 且 有角度的话 , 组合的print为正方形,方便裁剪
|
||||||
if "print_angle_list" in result['print'].keys() and result['print']['print_angle_list'][0] != 0:
|
if "print_angle_list" in print_dict.keys() and print_dict['print_angle_list'][0] != 0:
|
||||||
painting_dict['mask_inv_print'] = self.tile_image(single_mask_inv_print, dim_pattern, print_['scale'], dim_max, dim_max, painting_dict['location'], trigger=True)
|
painting_dict['mask_inv_print'] = self.tile_image(single_mask_inv_print, dim_pattern, print_['scale'], dim_max, dim_max, painting_dict['location'], trigger=True)
|
||||||
painting_dict['tile_print'] = self.tile_image(print_['image'], dim_pattern, print_['scale'], dim_max, dim_max, painting_dict['location'], trigger=True)
|
painting_dict['tile_print'] = self.tile_image(print_['image'], dim_pattern, print_['scale'], dim_max, dim_max, painting_dict['location'], trigger=True)
|
||||||
else:
|
else:
|
||||||
@@ -459,19 +445,11 @@ class PrintPainting(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_print(print_dict):
|
def get_print(print_dict):
|
||||||
if not 'print_scale_list' in print_dict.keys() or print_dict['print_scale_list'][0] < 0.3:
|
if 'print_scale_list' not in print_dict.keys() or print_dict['print_scale_list'][0] < 0.3:
|
||||||
print_dict['scale'] = 0.3
|
print_dict['scale'] = 0.3
|
||||||
else:
|
else:
|
||||||
print_dict['scale'] = print_dict['print_scale_list'][0]
|
print_dict['scale'] = print_dict['print_scale_list'][0]
|
||||||
|
|
||||||
if not 'IfSingle' in print_dict.keys():
|
|
||||||
print_dict['IfSingle'] = False
|
|
||||||
|
|
||||||
# data = minio_client.get_object(print_dict['print_path_list'][0].split("/", 1)[0], print_dict['print_path_list'][0].split("/", 1)[1])
|
|
||||||
# data_bytes = BytesIO(data.read())
|
|
||||||
# image = Image.open(data_bytes)
|
|
||||||
# image_mode = image.mode
|
|
||||||
|
|
||||||
bucket_name = print_dict['print_path_list'][0].split("/", 1)[0]
|
bucket_name = print_dict['print_path_list'][0].split("/", 1)[0]
|
||||||
object_name = print_dict['print_path_list'][0].split("/", 1)[1]
|
object_name = print_dict['print_path_list'][0].split("/", 1)[1]
|
||||||
image = oss_get_image(bucket=bucket_name, object_name=object_name, data_type="PIL")
|
image = oss_get_image(bucket=bucket_name, object_name=object_name, data_type="PIL")
|
||||||
@@ -481,13 +459,6 @@ class PrintPainting(object):
|
|||||||
new_background.paste(image, mask=image.split()[3])
|
new_background.paste(image, mask=image.split()[3])
|
||||||
image = new_background
|
image = new_background
|
||||||
print_dict['image'] = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)
|
print_dict['image'] = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)
|
||||||
|
|
||||||
# file = minio_client.get_object(print_dict['print_path_list'][0].split("/", 1)[0], print_dict['print_path_list'][0].split("/", 1)[1]).data
|
|
||||||
# print_dict['image'] = cv2.imdecode(np.fromstring(file, np.uint8), 1)
|
|
||||||
|
|
||||||
# image = cv2.imdecode(np.frombuffer(file, np.uint8), 1)
|
|
||||||
# return image
|
|
||||||
|
|
||||||
return print_dict
|
return print_dict
|
||||||
|
|
||||||
def crop_image(self, image, image_size_h, image_size_w, location, print_shape):
|
def crop_image(self, image, image_size_h, image_size_w, location, print_shape):
|
||||||
|
|||||||
Reference in New Issue
Block a user