feat
fix 修复product img 头部缺失问题
This commit is contained in:
@@ -136,24 +136,39 @@ def infer_cancel(tasks_id):
|
||||
|
||||
def pre_processing_image(image_url):
|
||||
image = oss_get_image(bucket=image_url.split('/')[0], object_name=image_url[image_url.find('/') + 1:], data_type="PIL")
|
||||
# 原始图片的尺寸
|
||||
width, height = image.size
|
||||
|
||||
# resize 图片内尺寸 并贴到768-512的纯白图像上
|
||||
target_height = 768
|
||||
target_width = 512
|
||||
aspect_ratio = image.width / image.height
|
||||
new_width = int(target_height * aspect_ratio)
|
||||
resized_image = image.resize((new_width, target_height))
|
||||
left = (target_width - resized_image.width) // 2
|
||||
top = (target_height - resized_image.height) // 2
|
||||
right = target_width - resized_image.width - left
|
||||
bottom = target_height - resized_image.height - top
|
||||
image = ImageOps.expand(resized_image, (left, top, right, bottom), fill="white")
|
||||
image_size = image.size
|
||||
if image.mode in ('RGBA', 'LA') or (image.mode == 'P' and 'transparency' in image.info):
|
||||
# 计算长宽比为 3:2 的新尺寸
|
||||
desired_ratio = 2 / 3
|
||||
current_ratio = width / height
|
||||
|
||||
if current_ratio > desired_ratio:
|
||||
# 原始图片更宽,需要在上下添加 padding
|
||||
new_width = width
|
||||
new_height = int(width / desired_ratio)
|
||||
else:
|
||||
# 原始图片更高或者长宽比已经为 3:2
|
||||
new_height = height
|
||||
new_width = int(height * desired_ratio)
|
||||
|
||||
# 创建一个新的画布,大小为添加 padding 后的尺寸,并设置为白色背景
|
||||
pad_image = Image.new('RGBA', (new_width, new_height), (0, 0, 0, 0))
|
||||
|
||||
# 将原始图片粘贴到新的画布中心
|
||||
left = (new_width - width) // 2
|
||||
top = (new_height - height) // 2
|
||||
pad_image.paste(image, (left, top))
|
||||
|
||||
# 将画布 resize 成宽度 500,长度 750
|
||||
resized_image = pad_image.resize((500, 750))
|
||||
image_size = (512, 768)
|
||||
|
||||
if resized_image.mode in ('RGBA', 'LA') or (resized_image.mode == 'P' and 'transparency' in resized_image.info):
|
||||
# 创建白色背景
|
||||
background = Image.new("RGB", image.size, (255, 255, 255))
|
||||
background = Image.new("RGB", image_size, (255, 255, 255))
|
||||
# 将图片粘贴到白色背景上
|
||||
background.paste(image, mask=image.split()[3])
|
||||
background.paste(resized_image, mask=resized_image.split()[3])
|
||||
image = np.array(background)
|
||||
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
|
||||
return image, image_size
|
||||
@@ -162,11 +177,11 @@ def pre_processing_image(image_url):
|
||||
if __name__ == '__main__':
|
||||
rd = GenerateProductImageModel(
|
||||
tasks_id="123-89",
|
||||
prompt="",
|
||||
# prompt="",
|
||||
image_strength=0.9,
|
||||
# prompt=" the best quality, masterpiece. detailed, high-res, simple background, studio photography, extremely detailed, updo, detailed face, face, close-up, HDR, UHD, 8K realistic, Highly detailed, simple background, Studio lighting",
|
||||
prompt=" the best quality, masterpiece. detailed, high-res, simple background, studio photography, extremely detailed, updo, detailed face, face, close-up, HDR, UHD, 8K realistic, Highly detailed, simple background, Studio lighting",
|
||||
image_url="aida-results/result_00097282-ebb2-11ee-a822-b48351119060.png",
|
||||
product_type="single"
|
||||
product_type="overall"
|
||||
)
|
||||
server = GenerateProductImage(rd)
|
||||
print(server.get_result())
|
||||
|
||||
Reference in New Issue
Block a user