红孩儿编辑器的模块设计12

插入图像的逻辑
插入图像需要解决的问题有如下的几个:
1如何把图像的文件上传到系统的内存中
2如何解析图像文件的数据流
3如何显示图像的信息

第一个问题使用了HTML5的File API进行实现。暂不展开叙述
第二个问题是本篇的重点讨论对象。
为了解析图像的文件数据流,需要了解图像文件的格式,不同的图像文件
格式,采用了不同的编码与解码方案。本系统首先默认实现的是对PNG图
像格式的解析。以后再加上对jpg,gif等格式的解析。

png格式的文件,在文件头有八个字节的署名区,对解析它的程序表明:
我是png格式的图像,不是文本文件。然后它有各种类型的数据块,
4种关键性的数据块和14种非关键性的数据块。关键性的数据块,解析程序
必须对它进行处理,非关键性的数据块可以忽略。这四种关键性的数据块
分别是文件头,调色板,图像数据,文件尾。
每个数据块的结构是四个字节的长度信息,四个字节的数据块的类型信息,
不定长度的数据块内的数据信息,四个字节的CRC校验码。特定的数据块
可能没有数据块内的数据信息,例如文件尾这个数据块。长度的信息仅包括
了数据信息的长度。

编码流程如下:
1传递抽取,2扫描行的序列化,3 过滤,4压缩,5。数据块化

解码流程是编码流程的逆过程。
具体的PNG的格式的详细细节情况,见 png格式的规范的翻译的系列文章。

我们对Png数据流的解析,首先是解析文件头数据块,得到图像的长和宽,
位深度,颜色类型,压缩方法,过滤方法和交织方法 这些重要的元数据信息。
其次解析调色板的信息。对于某些图像调色板可能没有使用,这就不用解析这个数据块了。
重点是对图像的数据信息块进行解码操作。解码由上述的五个步骤组成,所以
每个步骤对应的操作,分别由解码器的一个模块来负责。

第三个问题在HTML5的画布上有相应的显示函数来完成,也不展开了。

红孩儿编辑器的模块设计12相关推荐

  1. 用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器

    用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器 HP_tk.py模块是小白量化第二代量化系统中的开发模块.其中HP_tk.py模块是小白量化系统GU ...

  2. 用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器

    用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器 前面我们介绍了在Tkinter中使用exec()函数运行用户程序的方法.exec()采用多线程 ...

  3. C++ 开发者怒了:这个无用的模块设计最终会害死 C++!

    2018 年年底,C++ 标准委员会历史上规模最大的一次会议在美国 San Diego 召开,讨论了哪些特性要加入到 C++20 中.其中,Modules 便是可能进入 C++ 20 的一大重要特性: ...

  4. 三甲:在线富文本编辑器的架构设计及实践

    12月5日, 极客邦(InfoQ)在深圳举办 GMTC 大会,蚂蚁集团语雀编辑器技术同学三甲受邀参加大会并分享<在线富文本编辑器的架构设计及实践>,以下内容是根据现场演讲收集整理. 大家下 ...

  5. Java生鲜电商平台-团购模块设计与架构

    Java生鲜电商平台-团购模块设计与架构 说明:任何一个电商系统中,对于促销这块是必不可少的,毕竟这块是最吸引用户的,用户也是最爱的模块之一,理由很简单,便宜. 我的经验是无论是大的餐饮点还是小的餐饮 ...

  6. OA 办公系统 模块设计

    --连接主数据库 use Master go --如果数据库simpleoa 存在,则先删除simpleoa. if exists (select * from sysdatabases where ...

  7. Python OpenCV开发MR智能人脸识别打卡系统(四、服务模块设计)

    需要源码请点赞关注收藏后评论区留言私信~~~ 整体系统讲解如下 Python OpenCV开发MR智能人脸识别打卡系统(一.需求分析与系统设计) Python OpenCV开发MR智能人脸识别打卡系统 ...

  8. 多应用多平台支付模块设计-基础模块开篇

    近来,欲将三方支付平台对接入笔者框架内,简化,后期业务功能的开发. 为满足此功能的可扩展性,欲定义"订单业务接口"."支付方式接口"规则. 当,用户下单时,根据 ...

  9. PX4模块设计之二十六:BatteryStatus模块

    PX4模块设计之二十六:BatteryStatus模块 1. BatteryStatus模块简介 2. 模块入口函数 2.1 主入口battery_status_main 2.2 自定义子命令cust ...

  10. 客户关系管理项目——客户管理模块设计

    一 模块需求细化 1 实现客户信息录入 "添加"只有具有添加客户权限的用户才可以填写,只有具备3号角色的用户才能负责客户的添加,即超链接上会出现"添加客户"超链 ...

最新文章

  1. sqlserver怎么查看索引_Sql Server之旅——第六站 为什么都说状态少的字段不能建索引...
  2. DDR3 LAYOUT RULES
  3. 跟我学 Java 8 新特性之 Stream 流(三)缩减操作
  4. Keil 文本对不上格
  5. 作者:李翠平, 女, 中国人民大学信息学院教授、 博士生导师。
  6. Android Shape工具 Duck
  7. nginx上安装mysql 性能_Linux安装Mysql及Nginx详细步骤
  8. 【bzoj4443】[Scoi2015]小凸玩矩阵 二分+二分图最大匹配
  9. Matlab程序怎样打包
  10. python文本分类评价指标 top1如何计算_推荐算法评价指标
  11. 富文本编辑器使用案例
  12. 锐捷显示认证服务器不可用,win10系统下锐捷客户端认证失败的解决方法
  13. Java方法重写和重载的区别
  14. input框输入文本限制
  15. 利用Flourish制作动态条形图
  16. STM32F0 定时器中断 小白掉进的坑(FreeModbus)Timeout
  17. 找回生命本源的力量,走上生命觉醒的旅程
  18. python脚本无缝拼接图片
  19. 系统日志管理及日志管理服务
  20. dio拦截器 flutter_Flutter开发 Dio拦截器实现token验证过期的功能

热门文章

  1. L1-5 不变初心数 (15 分)(C/C++)
  2. 关于VM开启黑屏的解决方法
  3. Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to make it available.解决
  4. python三阶魔方_三阶魔方自动求解及动态可视化matlab代码
  5. D - 一只小蜜蜂...
  6. 三步走,帮你整理微信运营思路
  7. PS给图片四周加上圆角
  8. aardio - 仿安装界面进行窗口高度调节的方法
  9. 各种滤镜算法C语言,Photoshop入门学习之PS 滤镜算法原理——染色玻璃
  10. 23种常见设计模式详解