为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Windows 10上使用python 3.6.5调整比例的同时调整svg的大小

如何在Windows 10上使用python 3.6.5调整比例的同时调整svg的大小

白猪掌柜的 2021-04-30 06:13:11
我正在尝试将一些默认默认值约为420 x 500像素的SVG缩小,它们的大小并非全部相同,但是我想在输出文件上保持50px的宽度。这是我到目前为止管理(从这个):import osimport svgutilspath = 'path/to/files'svg_files = [f for f in os.listdir(path) if f.endswith('.svg')]for i in svg_files:    svg_file = os.path.join(path, i)    svg = svgutils.transform.fromfile(svg_file)    original = svgutils.compose.SVG(svg_file)    original.scale(.1)    svg_out = os.path.splitext(svg_file)[0] + '_scale.svg'    new_svg = svgutils.compose.Figure(float(svg.height) * .1,                                      float(svg.width) * .1, original)    new_svg.save(svg_out)但是它仅添加<g>with变换,而不会调整原始大小。而且,最终结果不会在inkscape中显示。知道我在这里做错了吗?
查看完整描述

2 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

到目前为止,我有一些东西:


# scale SVG images from files


import os

import re

import svgutils as su


SCALE = .1

path = 'E:/Slicke/Sitne'

svg_files = [f for f in os.listdir(path) if f.endswith('.svg')]


for i in svg_files:

    svg_file = os.path.join(path, i)


    # Get SVGFigure from file

    original = su.transform.fromfile(svg_file)


    # Original size is represetnted as string (examle: '600px'); convert to float

    original_width = float(re.sub('[^0-9]','', original.width))

    original_height = float(re.sub('[^0-9]','', original.width))


    scaled = su.transform.SVGFigure(original_width * SCALE, original_height * SCALE,)

    # Get the root element

    svg = original.getroot()


    # Scale the root element

    svg.scale_xy(SCALE, SCALE)


    # Add scaled svg element to figure

    scaled.append(svg)

    # Create the path and new file name

    svg_out = os.path.splitext(svg_file)[0] + '_scale.svg'

    print(svg_out)

    scaled.save(svg_out)


查看完整回答
反对 回复 2021-05-11
  • 2 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信