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
相关产品推荐
相关产品推荐

