代码拉取完成,页面将自动刷新
from __defines__ import *
import shutil
from functions import Logger
from PIL import Image
def cut_images(is_elec: bool):
# 原始资源路径
ORIGIN_SRC_FULLPATH = (
ORIGIN_ELECTRIC_GUITAR_RESOURCES_ABS_DIR
if is_elec
else ORIGIN_ACOUSTIC_GUITAR_RESOURCES_ABS_DIR
)
# 输出路径
OUTPUT_DIR = os.path.join(
ELECTRIC_GUITAR_RESOURCES_ABS_DIR
if is_elec
else ACOUSTIC_GUITAR_RESOURCES_ABS_DIR,
RESUORECE_DIR_NAME,
)
# 清空已有的路径和文件
if os.path.exists(OUTPUT_DIR):
shutil.rmtree(OUTPUT_DIR)
# 重建路径和文件
os.makedirs(OUTPUT_DIR)
# 裁剪的范围高度(电吉他)
CUT_RANGES_ELEC = [
# Type1
1024, # 0
570, # 1
566, # 2
582, # 3
# Type0
416, # 4
588, # 5
565, # 6
565, # 7
669, # 8
]
# 裁剪的范围高度(木吉他)
CUT_RANGES_ACOUSTIC = [
# Type1
762, # 0
461, # 1
457, # 2
459, # 3
# Type0
296, # 4
476, # 5
456, # 6
458, # 7
533, # 8
]
CUT_RANGES = CUT_RANGES_ELEC if is_elec else CUT_RANGES_ACOUSTIC
OFFSET = 10
for root, dirs, files in os.walk(ORIGIN_SRC_FULLPATH, topdown=False):
for file_name in files:
if file_name.endswith(".jpg"):
num = file_name.replace(
"365日!电吉他手的养成计划_" if is_elec else "365日!木吉他手的养成计划_", ""
)
num = int(num.replace(".jpg", "")) - 1
type = num % 2 # 1是每周第一页,0是每周第二页
week = int((num + 1) / 2)
# if 1 == type:
# Logger.debug(f"{week} --> {_names['weeks'][str(week)]}")
# continue
output_path = f"{OUTPUT_DIR}/第{week}周"
if not os.path.exists(output_path):
os.makedirs(output_path)
full_path = os.path.join(root, file_name)
img = Image.open(full_path)
Logger.info(
f"切割图片({img.width}, {img.height}) {file_name} 到 {output_path}"
)
Logger.info(f"切割参数{CUT_RANGES}")
if 1 == type:
rect = [0, 0, img.width, CUT_RANGES[0]]
Logger.info(f"切割每天练习图片({rect}/({img.width}, {img.height})")
region = img.crop(rect)
region.save(f"{output_path}/每天练习.jpg")
rect[1] = rect[1] + CUT_RANGES[0]
rect[3] = rect[1] + CUT_RANGES[1]
realrect = (rect[0], rect[1] - OFFSET, rect[2], rect[3] + OFFSET)
Logger.info(f"切割周一图片({realrect}/({img.width}, {img.height})")
region = img.crop(realrect)
region.save(f"{output_path}/周一.jpg")
rect[1] = rect[1] + CUT_RANGES[1]
rect[3] = rect[1] + CUT_RANGES[2]
realrect = (rect[0], rect[1] - OFFSET, rect[2], rect[3] + OFFSET)
Logger.info(f"切割周二图片({realrect}/({img.width}, {img.height})")
region = img.crop(realrect)
region.save(f"{output_path}/周二.jpg")
rect[1] = rect[1] + CUT_RANGES[2]
rect[3] = rect[1] + CUT_RANGES[3]
realrect = (rect[0], rect[1] - OFFSET, rect[2], rect[3] + OFFSET)
Logger.info(f"切割周三图片({realrect}/({img.width}, {img.height})")
region = img.crop(realrect)
region.save(f"{output_path}/周三.jpg")
if 0 == type:
rect = [0, 0, img.width, CUT_RANGES[4]]
Logger.info(f"切割提示图片({rect}/({img.width}, {img.height})")
region = img.crop(rect)
region.save(f"{output_path}/提示.jpg")
rect[1] = rect[1] + CUT_RANGES[4]
rect[3] = rect[1] + CUT_RANGES[5]
realrect = (rect[0], rect[1] - OFFSET, rect[2], rect[3] + OFFSET)
Logger.info(f"切割周四图片({realrect}/({img.width}, {img.height})")
region = img.crop(realrect)
region.save(f"{output_path}/周四.jpg")
rect[1] = rect[1] + CUT_RANGES[5]
rect[3] = rect[1] + CUT_RANGES[6]
realrect = (rect[0], rect[1] - OFFSET, rect[2], rect[3] + OFFSET)
Logger.info(f"切割周五图片({realrect}/({img.width}, {img.height})")
region = img.crop(realrect)
region.save(f"{output_path}/周五.jpg")
rect[1] = rect[1] + CUT_RANGES[6]
rect[3] = rect[1] + CUT_RANGES[7]
realrect = (rect[0], rect[1] - OFFSET, rect[2], rect[3] + OFFSET)
Logger.info(f"切割周六图片({realrect}/({img.width}, {img.height})")
region = img.crop(realrect)
region.save(f"{output_path}/周六.jpg")
rect[1] = rect[1] + CUT_RANGES[7]
rect[3] = rect[1] + CUT_RANGES[8]
realrect = (rect[0], rect[1] - OFFSET, rect[2], rect[3] + OFFSET)
Logger.info(f"切割周天图片({realrect}/({img.width}, {img.height})")
region = img.crop(realrect)
region.save(f"{output_path}/周天.jpg")
cut_images(True)
cut_images(False)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。