xw_zzy 2023-06-07 20:39 采纳率: 100%
浏览 93
已结题

关于#python#的问题,请各位专家解答!

#如何利用python-docx-0.8.11 把插入到Word文档中的JPG,PNG图片设置图形样式,例如棱台形椭圆,柔化边缘矩形等

from docx import Document
from docx.shared import Inches
from docx.enum.dml import MSO_SHAPE, MSO_SHAPE_TYPE
document = Document()
# 添加一个图片
picture = document.add_picture('picture.png', width=Inches(2), height=Inches(2))
# 获取图片的形状对象
shape = picture.inline_shapes[0]
# 将形状设置为椭圆
shape_type = MSO_SHAPE.OVAL
shape_type_id = MSO_SHAPE_TYPE(shape_type)
shape._element.get_or_add_nvSpPr().get_or_add_cNvPr().set('descr', shape_type)
sp = shape._element.get_or_add_spPr()
sp.get_or_add_prstGeom().set('prst', shape_type_id)
document.save('document.docx')

  • 写回答

3条回答 默认 最新

  • 全栈若城 Python领域新星创作者 2023-06-07 20:59
    关注

    好问题 值得研究

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • MR_Bone 2023-06-07 21:00
    关注

    使用python-docx-0.8.11库可以将插入到Word文档中的JPG和PNG图片设置为不同的图形样式,例如棱台形、椭圆、柔化边缘矩形等。下面是一个示例代码,展示如何将插入的图片设置为椭圆形状:

    from docx import Document
    from docx.shared import Inches
    from docx.enum.dml import MSO_SHAPE, MSO_SHAPE_TYPE
    
    document = Document()
    
    # 添加一个图片
    picture = document.add_picture('picture.png', width=Inches(2), height=Inches(2))
    
    # 获取图片的形状对象
    shape = picture.inline_shapes[0]
    
    # 将形状设置为椭圆
    shape_type = MSO_SHAPE.OVAL
    shape_type_id = MSO_SHAPE_TYPE(shape_type)
    shape._element.get_or_add_nvSpPr().get_or_add_cNvPr().set('descr', shape_type)
    sp = shape._element.get_or_add_spPr()
    sp.get_or_add_prstGeom().set('prst', shape_type_id)
    
    document.save('document.docx')
    

    这段代码首先创建了一个新的Document对象,然后使用add_picture()方法添加了一张名为picture.png的图片,设置了图片的宽度和高度为2英寸。接下来,通过picture.inline_shapes[0]获取插入图片的形状对象。然后,将形状设置为椭圆形状,这是通过MSO_SHAPE.OVALMSO_SHAPE_TYPE来实现的。最后,使用save()方法将文档保存为document.docx

    这样,插入到Word文档中的图片就会被设置为椭圆形状。你可以根据需要使用不同的形状类型,例如棱台形、柔化边缘矩形等,只需将shape_typeshape_type_id更改为相应的值即可。

    评论
  • 中本王 2023-06-08 10:31
    关注

    以上的Python代码使用python-docx-0.8.11库实现了在Word文档中插入图片,并且设置了图片的图形样式为椭圆。如果要设置其他图形样式,可以按照以下步骤进行更改:

    1. 获取图片的形状对象

    使用picture.inline_shapes[0]来获取插入的图片的形状对象。

    1. 设置形状样式

    使用MSO_SHAPEMSO_SHAPE_TYPE枚举来定义不同的形状样式,常见的有椭圆(MSO_SHAPE.OVAL)、矩形(MSO_SHAPE.RECTANGLE)、圆角矩形(MSO_SHAPE.ROUNDED_RECTANGLE)、菱形(MSO_SHAPE.DIAMOND)等等。将所需的形状样式赋值给shape_type变量。

    1. 应用形状样式

    shape_type转化为对应的形状类型ID,然后将其应用到形状对象上,即可完成样式设置。

    以下是一个示例代码,用于设置图形样式为棱台形(MSO_SHAPE.TRAPEZOID):

    from docx import Document
    from docx.shared import Inches
    from docx.enum.dml import MSO_SHAPE, MSO_SHAPE_TYPE
    
    document = Document()
    
    # 添加一个图片
    picture = document.add_picture('picture.png', width=Inches(2), height=Inches(2))
    
    # 获取图片的形状对象
    shape = picture.inline_shapes[0]
    
    # 将形状设置为棱台形
    shape_type = MSO_SHAPE.TRAPEZOID
    shape_type_id = MSO_SHAPE_TYPE(shape_type)
    shape._element.get_or_add_nvSpPr().get_or_add_cNvPr().set('descr', shape_type)
    sp = shape._element.get_or_add_spPr()
    sp.get_or_add_prstGeom().set('prst', shape_type_id)
    
    document.save('document.docx')
    

    除了设置形状样式外,还可以调整其它属性,例如颜色、填充、边框等,可通过更改sp对象的属性来实现。注意,在应用形状样式之前,需要通过_element.get_or_add_nvSpPr().get_or_add_cNvPr().set('descr', shape_type)将形状样式的描述信息添加到形状对象中。

    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 修改了问题 6月7日
  • 创建了问题 6月7日

悬赏问题

  • ¥15 Matlab计算100000*100000的矩阵运算问题:
  • ¥50 VB6.0如何识别粘连的不规则的数字图片验证码
  • ¥16 需要完整的这份订单所有的代码,可以加钱
  • ¥30 写一个带界面控制的机房电脑一键开机关机并且实时监控的软件
  • ¥15 Stata数据分析请教
  • ¥15 请教如何为VS2022搭建 Debug|win32的openCV环境?
  • ¥15 关于#c++#的问题:c++如何使用websocketpp实现websocket接口调用,求示例代码和相关资料
  • ¥15 51单片机的外部中断,按下按键后不能切换到另一个模式
  • ¥15 java连接sqlserver有问题
  • ¥15 yolov8 如何调cfg参数