如何编程读取svg文件中的对象_今天,小程序正式支持 SVG

d5fc54dd4ad67d3ae09c0b8d8454b8cc.png

写在前面

今天你可以在小程序中使用 Cax 引擎高性能渲染 SVG!

SVG 是可缩放矢量图形(Scalable Vector Graphics),基于可扩展标记语言,用于描述二维矢量图形的一种图形格式。它由万维网联盟制定,是一个开放标准。SVG 的优势有很多:

  • SVG 使用 XML 格式定义图形,可通过文本编辑器来创建和修改
  • SVG 图像可被搜索、索引、脚本化或压缩
  • SVG 是可伸缩的,且放大图片质量不下降
  • SVG 图像可在任何的分辨率下被高质量地打印
  • SVG 可被非常多的工具读取和修改(比如记事本)
  • SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性、可编程星更强
  • SVG 完全支持 DOM 编程,具有交互性和动态性

而支持上面这些优秀特性的前提是 - 需要支持 SVG 标签。比如在小程序中直接写:

上面定义了 SVG 的结构、样式和点击行为。但是小程序目前不支持 SVG 标签,仅仅支持加载 SVG 之后 作为 background-image 进行展示,如 background-image: url("data:image/svg+xml.......),或者 base64 后作为 background-image 的 url。

那么怎么办呢?有没有办法让小程序支持 SVG? 答案是有的!需要下面这些东西(站在巨人的肩膀上):

  • JSX,史上最强 UI 表达式,支持书写 XML-Hyperscript 互转的 JS 语言
  • 小程序内置 Canvas 渲染器
  • Cax 最新渲染引擎
  • HTM,Hyperscript Tagged Markup,可能是 JSX 的替代品或者另一种选择,使用ES标准的模板语法实现的 Hyperscript 运行时/编译时生成,preact 作者(也是google工程师)打造

这里稍微解释下 Hyperscript:

比如 JSX 中的

Hello {this.props.name}

或者 js 中的 htm:

html`
Hello {this.props.name}
`

最后都会被编译成:

h( "div
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`mpimg.imread()`函数默认是无法直接读取SVG格式的矢量图像文件的,因为SVG文件本质上是一种基于XML语言的文本文件,而不是像PNG或JPEG这样的二进制图像文件。因此,如果要读取SVG格式的矢量图像文件,需要使用其他的方式进行解析和读取。 一种常用的方式是使用`svglib`库将SVG文件转换为PDF格式,然后再使用`matplotlib`库的`PdfPages`对象读取PDF文件。具体步骤如下: 1. 安装`svglib`库 ```python pip install svglib ``` 2. 使用`svglib`库将SVG文件转换为PDF文件 ```python from svglib.svglib import svg2pdf # 将SVG文件转换为PDF文件 svg2pdf('image.svg', 'image.pdf') ``` 其,`image.svg`是要转换的SVG文件的路径,`image.pdf`是转换后的PDF文件的路径。 3. 使用`matplotlib`库的`PdfPages`对象读取PDF文件,并显示图像 ```python import matplotlib.pyplot as plt # 打开PDF文件 with plt.rc_context({'axes.edgecolor':'orange', 'xtick.color':'red', 'ytick.color':'green', 'figure.facecolor':'grey'}): with PdfPages('image.pdf') as pdf: # 读取PDF文件的所有页面并显示 for page in pdf.pages: plt.figure(figsize=(8.5, 11)) plt.imshow(page.grab().numpy()) plt.axis('off') plt.show() ``` 在这个示例,我们使用`PdfPages`对象打开转换后的PDF文件,并循环读取PDF文件的所有页面并显示出来。需要注意的是,由于PDF文件的页面大小可能与实际图像大小不同,因此需要根据需要进行调整。在这个示例,我们使用`plt.figure(figsize=(8.5, 11))`将页面大小设置为8.5英寸×11英寸,以确保图像能够正确显示。 需要注意的是,由于SVG文件和PDF文件是矢量图像文件,因此在显示时不会出现像素失真等问题,可以保证图像的清晰度和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值