python绘图保存为矢量图emf格式(通过CloudConvert中API接口将svg格式自动转为emf)

前言

        在用python进行绘图时,无法保存为emf矢量图格式。但在论文word中,通常使用emf较为清晰方便。在python中可以将图保存为svg矢量图格式,然后通过CloudConvert网站手动转为emf格式。但手动转换可能比较麻烦,对于写代码的小伙伴来说更喜欢自动化的方式,而在该网站中就有API接口,可以注册账号以后用代码进行自动转换和保存。具体步骤如下,代码付在最后。

1 注册CloudConvert账号

CloudConvert网站中可以通过邮箱注册账号(注册后会发送验证邮件,请及时验证!!!!)

2 创建API获取token

进入Dashboard,点击API下authorization-API keys,创建新的api,并在scope是中勾选所有选项。每个账号每天只能通过API自动免费转换24次,可以购买次数等。注意:得到API token后复制保存,只会显示一次,后面无法查看!!!!!

 3 通过job builder自动生成job tasks代码

在job builder 中import上传自己需要转换的文件,task添加设置需要转换为什么格式,export设置转换后的文件输出

完整代码

运行代码之前需要安装cloudconvert库

import cloudconvert

def svg2emf(file_name):
    # 1.定义cloudconvert的api_key(token)
    api_key = '**************************'
    # api_key为申请账号的token

    # 2.创建api客户端
    cloudconvert.configure(api_key=api_key, sandbox=False)

    # 3.创建一个job
    job = cloudconvert.Job.create(payload={
        "tasks": {
            # 导入文件
            "import-1": {
                "operation": "import/upload"
            },

            # 转换文件 svg转emf
            "convert-1": {
                "operation": "convert",
                "input_format": "svg",
                "output_format": "emf",
                "engine": "inkscape",
                "input": [
                    "import-1"
                ]
            },

            # 输出文件(将转换的emf文件输出为url)
            "export-1": {
                "operation": "export/url",
                "input": [
                    "convert-1"
                ],
                "inline": False,
                "archive_multiple_files": False
            }
        },
    })

    # 4.启动job对应的上传任务(上传原文件)
    upload_task_id = job['tasks'][0]['id']  # job['tasks'][0]对应的是上传任务,job['tasks'][1]是转换任务
    upload_task = cloudconvert.Task.find(id=upload_task_id)
    cloudconvert.Task.upload(file_name=file_name, task=upload_task)

    # 5.启动job对应的下载任务(下载转换后的文件)
    exported_url_task_id = job['tasks'][2]['id']  # job['tasks'][2]对应的是下载任务
    res = cloudconvert.Task.wait(id=exported_url_task_id)  # 使用cloudconvert.Task的内置函数等待转换文件完成
    file = res.get("result").get("files")[0]  # 使用cloudconvert.Task的内置函数提取转换文件
    cloudconvert.download(filename=resource.replace('svg', 'emf'), url=file['url'])  # 下载文件

    # 6.为了防止云端job数目过多而产生的api请求错误,在job完成后即将其删除
    cloudconvert.Job.delete(job['id'])


if __name__ == '__main__':
    resource = r'*********.svg'
    svg2emf(resource)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值