图片标注编辑平台搭建系列教程(6)——fabric渲染原理

原理

fabric的渲染步骤大致如下:

  1. 渲染前都设置背景图
  2. 然后调用ctx.save(),存储画布的绘制状态参数
  3. 然后调用每个object自身的渲染方法
  4. 最后调用ctx.restore(),恢复画布的保存状态
  5. 后处理,例如控制框的渲染等

值得注意的是,fabric渲染过程中有两次canvas变换,第一次变换是canvas的viewport整体变换(反应到标注平台就是canvas的自身的transform参数),第二次变换是每个object各自的变换,将object从画布左上角点为原点,转为以object中心点为原点。

弊端

这种方式,你会发现每一次都是所有几何全部渲染,不适合大数据量的渲染。当然,fabric也做了一些优化,比如对active的几何放在一个单独的canvas中进行编辑,不会重渲染原canvas。但是真正的编辑不太可能使用其原生的控制框进行编辑,真正的编辑更加复杂,需要对每个几何的每个坐标点(我称之为形点)进行拖拽编辑,这就需要我们设计一个草稿图(sketchLayer)的架构来对几何编辑进行扩展支持。后续文章我会探讨这个草稿图模式如何设计更加合理。

预告

下一章,我们讲讲架构,主题是ID编辑器和fabric如何构成一个完整的标注平台。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 21:42:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 21:42:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 21:42:01       82 阅读
  4. Python语言-面向对象

    2024-03-31 21:42:01       91 阅读

热门阅读

  1. 【八股】IOC

    2024-03-31 21:42:01       42 阅读
  2. 二分查找中的小细节

    2024-03-31 21:42:01       38 阅读
  3. http和https的区别!

    2024-03-31 21:42:01       41 阅读
  4. Python:魔法函数

    2024-03-31 21:42:01       42 阅读
  5. 滑动窗口算法详解及应用示例

    2024-03-31 21:42:01       41 阅读
  6. 第十五届蓝桥杯第二期模拟赛——python

    2024-03-31 21:42:01       36 阅读
  7. Kafka(十一)管理Kafka

    2024-03-31 21:42:01       33 阅读