
压缩算法
文章平均质量分 77
catshit322
兴趣
展开
-
git 拉取中空文件夹
在使用 git clone 命令拉取包含子模块的资源时,遇到下面这种情况可能会出现空文件夹的情况,没有获取到原始内容freetype, lv_drivers , lvgl这几个文件夹里边会是空的git clone 含有子模块的项目当一个 git 项目包含子模块(submodule) 时,直接使用 git clone 克隆下来的子模块目录里面是空的。简单的方法是拉取时添加--recursive 参数git clone --recursivehttps://github.com/lvg..原创 2022-01-16 01:06:49 · 3778 阅读 · 1 评论 -
ARM 中大小端转换和位翻转
ARM中的大小端转换有指令支持,可以查看 arm_acle.h 文件 看具体定义REV反转字中的字节顺序。REV16独立反转每个半字中的字节顺序。REVSH反转低半字中的字节顺序,并将符号扩展到32 位。注意以上指令仅仅是翻转字节顺序,每一个字节的存储数据还是MSB-LSB不变;要翻转位的顺序,需要用下面的指令:RBIT反转32 位字中的位的顺序。本来存储的位是 31~0 ,经过以上指令后变为 0~31,仅支持32位数据。如果仅翻转一个字节的位序,还要做一次移位.原创 2021-10-11 15:35:26 · 2527 阅读 · 0 评论 -
libpng 移植到 iMX RT1052 --- 压缩
前面的文章翻译了libpng的手册,机器翻译,很多地方还是很难懂。要用好一个别人的代码,还是要上手实际操作才行。根据前面的手册翻译(Libpng源码的使用)可以知道,libpng是一个成熟的开源库,提供了成熟的用户接口,在移植时一般不需要对源码本身进行太多修改。源码下载libpng和zlib的源码,解压拷贝到工程目录下,并修改文件夹名字,去掉版本信息,注意zlib文件夹名称不能随意修改,因为libpng中引用了zlib的头文件,需要保证路径正确打开RT1052例程的keil 工程,设原创 2021-03-27 17:11:18 · 375 阅读 · 0 评论 -
JPG-JPEG(JFIF)文件解码—YCbCr与RGB
YCbCr,是色彩空间的一种,通常会用于影片中的影像连续处理,或是数字摄影系统中。Y为颜色的亮度(luma)成分、而CB和CR则为蓝色和红色的浓度偏移量成份。Y就是所谓的流明(luminance),表示光的浓度且为非线性,使用伽马修正(gamma correction)编码处理。 Y'CbCr不是一种绝对的色彩空间,是一种针对RGB资讯所做的编码。真正的颜色显示是根据实际RGB色盘(colorant)来决定的。因...转载 2021-03-26 11:46:15 · 1951 阅读 · 0 评论 -
JPG-JPEG(JFIF)文件解码—文件结构
转载请注明:转自 http://blog.youkuaiyun.com/ymlbright yml_bright@163.com 一、总体结构 JPEG文件使用的数据存储方式有多种。最常用的格式称为JPEG文件交换格式(JPEG File Interchange Format,JFIF)。而JPEG文件大体上由一个个数据段组成,数据段包含:标记码(Tag)、数据长度、数据。 &...转载 2021-03-26 11:43:01 · 3021 阅读 · 0 评论 -
PNG 逐行扫描和隔行扫描(转)
http://www.alloyteam.com/2017/06/the-story-of-png-deinterlacing-algorithm/简单来说,png的隔行扫描将图像数据以概要或者预览的方式拆成了几个小图片存储,恢复图片时按照拆分的方法逆向还原得到原图,隔行扫描可以实现图像由模糊到清晰的过程,适合网络传输,理论上图像冗余性增强;但是会使文件增大;逐行扫描就是正常的依次遍历每个像素,文件存储空间会稍小。...转载 2021-03-17 10:38:35 · 1825 阅读 · 0 评论 -
libpng 源码的使用 第6节:调整/定制
上一篇是简化用户接口libpng 源码的使用 第五节:简化用户接口本篇翻译libpng的调整和定制调整和定制这里有两个问题。 首先是更改libpng如何执行标准操作,例如内存分配,输入/输出和错误处理。第二部分处理更复杂的事情,例如添加新的块,添加新的转换以及通常更改libpng的工作方式。这两个都是编译时问题; 也就是说,它们通常是在编写代码时确定的,几乎不需要为用户提供更改它们的方法。内存分配,输入/输出和错误处理libpng中的所有内存分配,输入/输出和错误处理都通过用原创 2021-03-15 19:17:53 · 1202 阅读 · 0 评论 -
libpng 源码的使用 第五节:简化用户接口
上一篇机器翻译完libpng 源码的使用 第四节:写 (接口)本篇开始翻译第五节,简化用户接口简化的API(在libpng-1.6.0中可用)隐藏了libpng和PNG文件格式本身的详细信息。 它允许将PNG文件读取为非常有限的内存中位图格式,或从相同格式写入。 如果这些格式不能满足您的需求,那么您可以并且应该使用上面更复杂的API-这些API支持各种内存中格式以及对这些格式的各种复杂转换以及各种API 操纵辅助信息。读取要使用简化的API读取PNG文件,请执行以下操作:1)在堆栈上原创 2021-03-15 18:55:45 · 687 阅读 · 0 评论 -
libpng 源码的使用 第四节:写 (接口)
上一篇libpng 源码的使用 第四节:写 (设置)主要是一些初始化及辅助信息设置,及整体概念介绍,本篇主要是写操作的接口即用户接口介绍高级写接口在这一点上,有两种方法可以进行: 通过高级写接口或一系列低级写操作。如果信息结构中存在图像数据,则可以使用高级接口。 允许所有定义的输出转换,并通过以下掩码启用。 PNG_TRANSFORM_IDENTITY No transformation PNG_TRANSFORM_PACKING Pack 1, 2原创 2021-03-15 17:23:52 · 1093 阅读 · 0 评论 -
libpng 源码的使用 第四节:写 (设置)
前面翻译了读png图像,接下来看写入png,即压缩libpng 源码的使用 第三节:读 (续4 底层读接口)IV. 写入其中大部分与 读 非常相似。 但是,在这里重复了所有重要的事情,因此您不必经常在阅读部分中进行回顾就可以理解写操作。设置在进入libpng之前,您将需要进行I / O初始化,因此,如果它不起作用,则没有任何要撤消的操作。 如果不使用标准I / O功能,则需要用自定义编写功能替换它们。 请参阅自定义libpng下的讨论。 FILE *fp = fopen(fi原创 2021-03-15 15:53:23 · 1377 阅读 · 0 评论 -
libpng 源码的使用 第三节:读 (续4 底层读接口)
接上篇libpng 源码的使用 第三节:读 (续3 上层读取接口(用户主要使用的接口))本篇是 底层读接口如果您要走低级路线,则现在可以读取所有文件信息,直到实际的图像数据为止。 您可以通过调用png_read_info()来实现。png_read_info(png_ptr, info_ptr);这将处理所有块,直到但不包括图像数据。这还将一些数据从PNG文件复制到解码结构中,以用于以后的转换。 复制的要点是:1)来自gAMA块的PNG文件gamma。 这将覆盖先前调用png_.原创 2021-03-14 19:28:26 · 1717 阅读 · 0 评论 -
libpng 源码的使用 第三节:读 (续3 上层读取接口(用户主要使用的接口))
上层读取接口(用户主要使用的接口) 前面都是一些配置接口,到此主要内容才开始,接上篇libpng 源码的使用 第三节:读 (续2)在这一点上,有两种方法可以进行: 通过高级读取接口,或通过一系列低级读取操作。 如果(a)您愿意将整个图像读入内存,并且(b)您要进行的输入转换限于以下设置,则可以使用高级接口: PNG_TRANSFORM_IDENTITY No transformation PNG_TRANSFORM_SCALE_16 Strip 16-bit原创 2021-03-14 14:07:54 · 476 阅读 · 0 评论 -
libpng 源码的使用 第三节:读 (续2)
接上一节libpng 源码的使用 第三节:读 (续1)screen_gamma的值与png_set_gamma的参数相同;然而,它如何影响输出取决于模式。png_set_alpha_mode()设置文件gamma默认值为1/screen_gamma,所以通常你不需要调用png_set_gamma。如果你需要不同的默认值,在png_set_alpha_mode()之前调用png_set_gamma()——如果你在png_set_alpha_mode()之后调用它,它将覆盖png_set_alpha原创 2021-03-13 19:33:28 · 650 阅读 · 0 评论 -
libpng 源码的使用 第三节:读 (续1)
接上一篇libpng 源码使用和手册机器翻译 第三节:读原创 2021-03-12 16:28:50 · 710 阅读 · 0 评论 -
libpng 源码使用和手册机器翻译 第三节:读
上一篇文章简单介绍了libpng ,翻译了手册前两节Libpng源码的使用本篇继续翻译 读和写 的内容读现在,我们将依次介绍在读取PNG文件时可能调用的函数,并简要解释每个函数的语法和用途。更多细节请参见example.c和png.h。虽然下一节将介绍渐进式读取,但您仍然需要本节中讨论的一些函数来读取PNG文件。设置在使用libpng之前,您需要执行1/0初始化(*),因此如果它不起作用,您无需撤销太多。当然,你也要确保你是,事实上,处理PNG文件。Libpng提供了一个简单的检查,原创 2021-03-12 16:04:52 · 792 阅读 · 0 评论 -
Libpng源码的使用
上一篇讲了libpng和zlib的关系zlib,Libpng,gzip,libzip库的联系与区别接下来记录libpng的使用准备首先了解png,bmp文件格式的特点,本篇不详细介绍。bmp图片是微软的图片格式,就是原始的像素数据加上bmp文件头组成,像素数据是倒装的,即第一个像素的(RGB)三个字节再原始文件的最后。png是原始数据压缩后加入png格式文件描述。下载libpng和zlib的源码,放在同一个目录中由于libpng实际上使用的是zlib的算法,libpng是zl原创 2021-03-11 19:40:19 · 5358 阅读 · 0 评论 -
zlib,Libpng,gzip,libzip库的联系与区别
Zlib 内有一个比较通用的数据压缩算法,是LZ77的变种算法,DEFLATE的算法,png,zip等文件都是使用了这个算法。Libpng 压缩png格式文件的开源库,使用zlib里边的压缩算法,添加png格式信息,将图片压成png格式。libpng需要和zlib一同使用。gzip 即GNU zip,压缩gz格式文件的开源库,也是使用LZ77压缩算法,添加gz格式信息,将文件打包成gz格式,可独立使用。libzip zip格式文件的开源库,包含了DEFLATE算法,添加zip格式信息,将文件打.原创 2021-03-10 11:40:47 · 2271 阅读 · 0 评论