You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中为图片添加Bleed(出血位)和Crop Marks(裁剪标记)

使用Python为图片添加镜像出血位与裁剪标记

准备工作

首先安装处理图片所需的Pillow库:

pip install pillow

实现思路

  1. 单位转换:将3mm的出血位宽度转换为图片对应的像素值(基于图片DPI)
  2. 镜像扩展出血区:对原图片的上下左右边缘进行镜像复制,填充出血区域,避免内容丢失
  3. 绘制裁剪标记:在扩展后的图片上,对应原图片的四个角位置绘制裁剪标记线

完整代码

from PIL import Image, ImageDraw

def add_bleed_and_crop_marks(input_path, output_path, bleed_mm=3, dpi=300):
    # 将毫米转换为像素:1英寸=25.4mm,dpi是每英寸像素数
    bleed_px = int(bleed_mm * dpi / 25.4)
    
    # 打开原图片
    with Image.open(input_path) as img:
        width, height = img.size
        
        # 计算扩展后的新尺寸:原尺寸 + 2*出血像素(左右/上下各加)
        new_width = width + 2 * bleed_px
        new_height = height + 2 * bleed_px
        
        # 创建新画布,匹配原图片的颜色模式
        new_img = Image.new(img.mode, (new_width, new_height))
        
        # 粘贴原图片到画布中心
        new_img.paste(img, (bleed_px, bleed_px))
        
        # 镜像填充左侧出血区:截取原图片左侧边缘,水平翻转后粘贴
        left_edge = img.crop((0, 0, bleed_px, height)).transpose(Image.FLIP_LEFT_RIGHT)
        new_img.paste(left_edge, (0, bleed_px))
        
        # 镜像填充右侧出血区:截取原图片右侧边缘,水平翻转后粘贴
        right_edge = img.crop((width - bleed_px, 0, width, height)).transpose(Image.FLIP_LEFT_RIGHT)
        new_img.paste(right_edge, (width + bleed_px, bleed_px))
        
        # 镜像填充顶部出血区:截取原图片顶部边缘,垂直翻转后粘贴
        top_edge = img.crop((0, 0, width, bleed_px)).transpose(Image.FLIP_TOP_BOTTOM)
        new_img.paste(top_edge, (bleed_px, 0))
        
        # 镜像填充底部出血区:截取原图片底部边缘,垂直翻转后粘贴
        bottom_edge = img.crop((0, height - bleed_px, width, height)).transpose(Image.FLIP_TOP_BOTTOM)
        new_img.paste(bottom_edge, (bleed_px, height + bleed_px))
        
        # 角落镜像填充(让过渡更自然)
        top_left_corner = img.crop((0, 0, bleed_px, bleed_px)).transpose(Image.ROTATE_180)
        new_img.paste(top_left_corner, (0, 0))
        
        top_right_corner = img.crop((width - bleed_px, 0, width, bleed_px)).transpose(Image.ROTATE_180)
        new_img.paste(top_right_corner, (width + bleed_px, 0))
        
        bottom_left_corner = img.crop((0, height - bleed_px, bleed_px, height)).transpose(Image.ROTATE_180)
        new_img.paste(bottom_left_corner, (0, height + bleed_px))
        
        bottom_right_corner = img.crop((width - bleed_px, height - bleed_px, width, height)).transpose(Image.ROTATE_180)
        new_img.paste(bottom_right_corner, (width + bleed_px, height + bleed_px))
        
        # 添加裁剪标记
        draw = ImageDraw.Draw(new_img)
        mark_length = 10  # 裁剪标记的长度(像素)
        
        # 左上角标记
        draw.line([(bleed_px - mark_length, bleed_px), (bleed_px, bleed_px)], fill="black", width=1)
        draw.line([(bleed_px, bleed_px - mark_length), (bleed_px, bleed_px)], fill="black", width=1)
        
        # 右上角标记
        draw.line([(width + bleed_px, bleed_px), (width + bleed_px + mark_length, bleed_px)], fill="black", width=1)
        draw.line([(width + bleed_px, bleed_px - mark_length), (width + bleed_px, bleed_px)], fill="black", width=1)
        
        # 左下角标记
        draw.line([(bleed_px - mark_length, height + bleed_px), (bleed_px, height + bleed_px)], fill="black", width=1)
        draw.line([(bleed_px, height + bleed_px), (bleed_px, height + bleed_px + mark_length)], fill="black", width=1)
        
        # 右下角标记
        draw.line([(width + bleed_px, height + bleed_px), (width + bleed_px + mark_length, height + bleed_px)], fill="black", width=1)
        draw.line([(width + bleed_px, height + bleed_px), (width + bleed_px, height + bleed_px + mark_length)], fill="black", width=1)
        
        # 保存图片,保留DPI信息
        new_img.save(output_path, dpi=(dpi, dpi))

# 使用示例
add_bleed_and_crop_marks("input.jpg", "output_with_bleed.jpg", bleed_mm=3, dpi=300)

代码说明

  • 单位转换:通过bleed_mm * dpi / 25.4精准转换毫米到像素,保证出血位符合印刷标准
  • 镜像扩展:完全模拟InDesign的镜像出血逻辑,用原图片边缘的翻转内容填充出血区,不会丢失任何原内容
  • 裁剪标记:在原图片的四个角外侧绘制短黑线,明确裁剪位置,标记长度可按需调整
  • 角落处理:额外对四个角落进行180度旋转填充,避免出血区角落出现生硬的拼接痕迹

注意事项

  • 若图片含透明通道,需用PNG等支持透明的格式保存
  • 可读取原图片的DPI自动适配:dpi = img.info.get("dpi", (300, 300))

内容的提问来源于stack exchange,提问作者Yazid Erman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:10:30