修正i3-3代SKU总成本计算错误并清理验证图片
- 修正3个i3-3代SKU文件总成本与配件之和不一致的问题:i3-3代-4G-32G总成本221.5->236.5,i3-3代-4G-64G总成本236.5->251.5,i3-3代-8G-64G总成本313.5->298.5 - 删除售价验证临时图片,新增nascab产品和2.5金单有产品目录
This commit is contained in:
70
产品/nascab/详情/add_text.py
Normal file
70
产品/nascab/详情/add_text.py
Normal file
@@ -0,0 +1,70 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""在图片上叠加文字标签:标题 + 副标题,带半透明背景条"""
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
import sys
|
||||
import os
|
||||
|
||||
def add_text_overlay(image_path, title, subtitle, output_path):
|
||||
img = Image.open(image_path).convert("RGBA")
|
||||
w, h = img.size
|
||||
|
||||
# 创建文字图层
|
||||
txt_layer = Image.new("RGBA", (w, h), (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(txt_layer)
|
||||
|
||||
# 字体大小根据图片宽度自适应
|
||||
title_size = max(48, w // 18)
|
||||
sub_size = max(28, w // 30)
|
||||
|
||||
# 尝试加载中文字体
|
||||
font_paths = [
|
||||
r"C:\Windows\Fonts\msyhbd.ttc", # 微软雅黑粗体
|
||||
r"C:\Windows\Fonts\msyh.ttc", # 微软雅黑
|
||||
r"C:\Windows\Fonts\simhei.ttf", # 黑体
|
||||
]
|
||||
title_font = None
|
||||
sub_font = None
|
||||
for fp in font_paths:
|
||||
if os.path.exists(fp):
|
||||
title_font = ImageFont.truetype(fp, title_size)
|
||||
sub_font = ImageFont.truetype(fp, sub_size)
|
||||
break
|
||||
|
||||
if title_font is None:
|
||||
title_font = ImageFont.load_default()
|
||||
sub_font = ImageFont.load_default()
|
||||
|
||||
# 文字位置:左上角,带边距
|
||||
margin_x = w // 15
|
||||
margin_y = h // 10
|
||||
|
||||
# 绘制半透明背景条
|
||||
title_bbox = draw.textbbox((margin_x, margin_y), title, font=title_font)
|
||||
sub_bbox = draw.textbbox((margin_x, title_bbox[3] + 12), subtitle, font=sub_font)
|
||||
|
||||
bar_top = margin_y - 16
|
||||
bar_bottom = sub_bbox[3] + 16
|
||||
bar_right = max(title_bbox[2], sub_bbox[2]) + 30
|
||||
|
||||
draw.rectangle(
|
||||
[(margin_x - 16, bar_top), (bar_right, bar_bottom)],
|
||||
fill=(0, 0, 0, 140)
|
||||
)
|
||||
|
||||
# 绘制标题(白色粗体)
|
||||
draw.text((margin_x, margin_y), title, font=title_font, fill=(255, 255, 255, 255))
|
||||
|
||||
# 绘制副标题(浅白色)
|
||||
draw.text((margin_x, title_bbox[3] + 12), subtitle, font=sub_font, fill=(220, 230, 255, 230))
|
||||
|
||||
# 合成
|
||||
result = Image.alpha_composite(img, txt_layer).convert("RGB")
|
||||
result.save(output_path, "PNG")
|
||||
print(f"Saved: {output_path}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 5:
|
||||
print("Usage: python add_text.py <image_path> <title> <subtitle> <output_path>")
|
||||
sys.exit(1)
|
||||
add_text_overlay(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
|
||||
Reference in New Issue
Block a user