# coding=utf-8 from PIL import Image import os from utils import create_logger logger = create_logger(__name__) def crop_image_left(image_path, crop_width): """ 从图片左侧切割指定宽度并覆盖原图片 参数: image_path (str): 图片文件路径 crop_width (int): 要切割的宽度(像素) """ try: # 打开原始图片 with Image.open(image_path) as img: # 获取图片尺寸 width, height = img.size # 验证切割宽度是否有效 if crop_width <= 0 or crop_width >= width: raise ValueError(f"切割宽度必须大于0且小于图片宽度({width}px)") # 计算切割区域 (left, upper, right, lower) crop_box = (crop_width, 0, width, height) # 执行切割 cropped_img = img.crop(crop_box) # 临时保存切割后的图片 temp_path = image_path + ".png" cropped_img.save(temp_path, quality=95) # 覆盖原文件 os.replace(temp_path, image_path) logger.info(f"成功从左侧切割 {crop_width}px 并覆盖原图") except Exception as e: print(f"处理图片时出错: {e}") if 'temp_path' in locals() and os.path.exists(temp_path): os.remove(temp_path) from PIL import Image #从顶部截到离底部crop_height像素 def remove_bottom_part(image_path, crop_height): img = Image.open(image_path) width, height = img.size cropped_img = img.crop((0, 0, width, height - crop_height)) # 保留顶部到 height - crop_height # 临时保存切割后的图片 temp_path = image_path + ".png" cropped_img.save(temp_path, quality=95) # 覆盖原文件 os.replace(temp_path, image_path) logger.info(f"成功从底部切割 {crop_height}px 并覆盖原图")