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

PyMuPDF如何从Quad中心点向各方向缩放以调整polygon_annot大小

PDF Quad中心点缩放实现方案

你当前直接使用缩放矩阵进行变换是基于PDF页面默认原点(左下角)做坐标运算,所以缩放后多边形会整体偏移。要实现围绕Quad中心点缩放,核心是依次执行三个坐标变换即可:先将Quad的中心点平移到坐标原点→执行缩放操作→再将坐标平移回原中心点位置。

具体实现代码

scale = 2 # 可自定义缩放倍数
for inst in text_instances:
    # 计算当前Quad的中心点坐标
    rect = inst.rect
    cx = rect.x0 + rect.width / 2
    cy = rect.y0 + rect.height / 2
    # 构造复合变换矩阵:移到原点 → 缩放 → 移回原中心点位置
    mat = fitz.Matrix(1, 0, 0, 1, -cx, -cy) * fitz.Matrix(scale, scale) * fitz.Matrix(1, 0, 0, 1, cx, cy)
    # 对Quad应用变换
    inst = inst.transform(mat)
    # 保留原有的点顺序调整逻辑
    inst[2], inst[3] = inst[3], inst[2]
    highlight = page.add_polygon_annot(inst)

如果需要横向、纵向使用不同的缩放比例,修改fitz.Matrix(scale, scale)的两个参数即可,比如fitz.Matrix(1.2, 1.5)代表横向放大1.2倍、纵向放大1.5倍,依然会围绕中心点生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 20:42:00