- 博客(29)
- 收藏
- 关注
原创 音视频入门-20-BMP、PNG、JPG、GIF静态图生成GIF动态图
* 音视频入门文章目录 *静态图 -> 动态图前面 【18-手动生成一张GIF图片】 和 【19-使用giflib处理GIF图片】 生成的 GIF 每一帧都是一个颜色,平时用到的 GIF 每一帧都是图片,下面就做一张每一帧都是图片的 GIF。准备了 4 张静态图 .bmp 、 .png 、 .jpg 、 .gif(静态的GIF):BMPPNGJPGGIF[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q7eocmrV-1610881923
2021-01-17 19:19:20
1039
原创 音视频入门-19-使用giflib处理GIF图片
* 音视频入门文章目录 *GIFLIBThe GIFLIB project上一篇 【手动生成一张GIF图片】, 自己生成了一张 GIF 动态图 rainbow.gif。下面,使用 GIFLIB 分离出 GIF 每一帧的 RGB ,然后将分离出的 RGB 再合成 GIF。GIF to RGBGIFLIB 项目里的 gif2rgb.c 已经实现了解码 GIF -> RGB。不过 gif2rgb.c 只保存了最后一帧图片的 RGB,这里需要改造。gif2rgb.cgif2rgb.c 在
2021-01-11 16:49:05
531
原创 音视频入门-18-手动生成一张GIF图片
* 音视频入门文章目录 *GIF 编码知识GIF 包含的数据块:文件头(Header)逻辑屏幕标识符(Logical Screen Descriptor)全局颜色表(Global Color Table)Application ExtensionComment Extension图形控制扩展(Graphic Control Extension)图像标识符(Image Descriptor)局部颜色表(Local Color Table)基于颜色表的
2020-12-03 22:41:38
402
原创 音视频入门-17-GIF文件格式详解
* 音视频入门文章目录 *GIF 文件格式解析图像互换格式主要分为两个版本,即图像互换格式 87a 和图像互换格式 89a。图像互换格式 87a:是在 1987 年制定的版本。图像互换格式 89a:是在 1989 年制定的版本。在这个版本中,为图像互换格式文档扩充了图形控制区块、备注、说明、应用程序接口等四个区块,并提供了对透明色和多帧动画的支持。现在我们一般所说的 GIF 动画都是指 89a 的格式。GIF 包含的数据块:文件头(Header)逻辑屏幕标识符(Logical Sc
2020-06-08 01:52:13
1515
原创 音视频入门-16-使用libjpeg-trubo处理JPEG图片
* 音视频入门文章目录 *RGB-to-JPEG 回顾上一篇 【手动生成一张JPEG图片】 根据 【JPEG文件格式详解】 一步一步地实现了将 RGB 数据生成了一张 JPEG 图片。可以感受到,自己来实现 JPEG 的基本系统编码还是有相当的复杂度的,JPEG 压缩编码算法一共分为 11 个步骤:颜色模式转换采样分块离散余弦变换(DCT)量化Zigzag 扫描排序DC 系数...
2020-03-22 18:10:29
545
原创 Android NDK JNI 入门笔记-day05-NDK应用签名校验
* Android NDK JNI 入门笔记目录 *开头NDK 实践-应用签名校验。应用签名Android 应用签名是应用打包过程的重要步骤之一,Google 要求所有的应用必须被签名才可以安装到 Android 操作系统中。应用签名不能保证 APK 不被篡改,只是为了能够校验出 APK 是否被篡改。在系统安装过程中,如果发现 APK 被篡改,安装就会失败。NDK 应用签名校验为了相...
2020-03-21 11:56:57
628
原创 Android NDK JNI 入门笔记-day04-NDK实现Hash算法
* Android NDK JNI 入门笔记目录 *开头前面的学习,我们已经掌握了 NDK 开发的必备知识。下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验。日常开发中,经常会用到 MD5 SHA1 SHA256 等 HASH 算法,我们可以在 Native 实现这些功能。Hash 算法HASH 主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的 12...
2020-03-20 23:42:22
343
原创 Android NDK JNI 入门笔记-day03-引用数据类型
* Android NDK JNI 入门笔记目录 *Java & JNI 引用数据类型对应于不同类型的 Java 对象, JNI 包含大量的引用类型Java 的类类型JNI 的引用类型类型描述java.lang.Objectjobject可以表示任何 Java 的对象,或者没有 JNI 对应类型的 Java 对象(实例方法的强制参数)java.l...
2020-03-20 23:41:35
308
原创 Android NDK JNI 入门笔记-day02-基本数据类型数据传递
* Android NDK JNI 入门笔记目录 *Java & JNI 基本数据类型Java 中的基本数据类型包括 boolean,byte,char,short,int,long,float,double 这几种。而用 C/C++ 编写 native 代码时,是不能直接使用 Java 的数据类型的。所以 JNI 提供了 jboolean、jbyte、jchar、jshort、j...
2020-03-20 23:39:40
289
原创 Android NDK JNI 入门笔记-day01-创建项目并运行
* Android NDK JNI 入门笔记目录 *创建项目1. 选择一个项目模板Native C++2. 配置我们的项目NamePackage nameSave locationLanguageMinimum SDK3. Customize C++ SupportC++ Standard4. 查看第一个 NDK-JNI 项目build.gradle...
2020-03-20 23:37:09
168
原创 音视频入门-15-手动生成一张JPEG图片
* 音视频入门文章目录 *JPEG 编码知识JPEG 是 Joint Photographic Exports Group 的英文缩写,中文称之为联合图像专家小组。该小组隶属于 ISO 国际标准化组织,主要负责定制静态数字图像的编码方法,即所谓的 JPEG 算法。JPEG 专家组开发了两种基本的压缩算法、两种熵编码方法、四种编码模式。如下所示:压缩算法:有损的离散余弦变换 D...
2020-02-28 17:53:24
1769
原创 音视频入门-14-JPEG文件格式详解
音视频入门文章目录 JPEG 文件格式解析JPEG 文件使用的数据存储方式有多种。最常用的格式称为 JPEG 文件交换格式(JPEG File Interchange Format,JFIF)。而 JPEG 文件大体上可以分成两个部分:标记码(Tag)和压缩数据。标记码由两个字节构成,其前一个字节是固定值 0xFF,后一个字节则根据不同意义有不同数值。在每个标记码之前还可以添加数目不限的无...
2019-12-02 14:12:04
1840
原创 音视频入门-13-使用开源库生成PNG图片
音视频入门文章目录 RGB-to-PNG 回顾上一篇 【手动生成一张PNG图片】 根据 【PNG文件格式详解】 一步一步地手动实现了将 RGB 数据生成了一张 PNG 图片。有许多开源的 PNG 相关的库可以简化开发:svpnglibattopnglodepnglibpng使用开源库的方式svpngDemo 例子:void test_rgb(void) { ...
2019-11-06 15:11:00
1146
原创 音视频入门-12-手动生成一张PNG图片
音视频入门文章目录 预热上一篇 【PNG文件格式详解】详细介绍了 PNG 文件的格式。PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR、IDAT、IEND)组成。PNG 文件包括 8 字节文件署名(89 50 4E 47 0D 0A 1A 0A,十六进制),用来识别 PNG 格式。数据块中有 4 个关键数据块:文件头数据块 IHDR(h...
2019-10-30 21:59:34
511
原创 音视频入门-11-PNG文件格式详解
音视频入门文章目录 PNG 文件格式解析PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR、IDAT、IEND)组成。PNG 文件包括 8 字节文件署名(89 50 4E 47 0D 0A 1A 0A,十六进制),用来识别 PNG 格式。用十六进制查看器打开任意一个 PNG 文件,都是可以看到这样的头部:PNG 定义了两种类型的数据块:一种...
2019-10-29 18:31:15
1246
原创 音视频入门-10-使用libyuv对YUV数据进行缩放、旋转、镜像、裁剪、混合
音视频入门文章目录 libyuvlibyuv 是 Google 开源的实现各种 YUV 与 RGB 之间相互转换、旋转、缩放等的库。它是跨平台的,可在 Windows、Linux、Mac、Android 等操作系统,x86、x64、arm 架构上进行编译运行,支持 SSE、AVX、NEON 等 SIMD 指令加速。准备工作一张图片下载 rainbow-700x700.bmp...
2019-09-21 12:59:46
2412
1
原创 音视频入门-09-RGB&YUV互转-使用开源库
音视频入门文章目录 介绍开源库使用第三方开源库来简化开发,屏蔽一些底层的复杂度,节省大量编写代码的时间。libyuv: Google 开源的实现各种 YUV 与 RGB 之间相互转换、旋转、缩放的库。yuv2rgb:C library for fast image conversion between yuv420p and rgb24.使用开源库libyuvFFmpeg...
2019-09-19 17:59:35
1786
原创 音视频入门-08-RGB&YUV
音视频入门文章目录 YUV & RGB 相互转换公式YCbCr 的 Y 与 YUV 中的 Y 含义一致,Cb 和 Cr 与 UV 同样都指色彩,Cb 指蓝色色度,Cr 指红色色度,在应用上很广泛,JPEG、MPEG、DVD、摄影机、数字电视等皆采此一格式。因此一般俗称的 YUV 大多是指 YCbCr 。RGB to YUV(YCbCr)RGB 范围 [0,255],Y ...
2019-09-18 23:39:10
1107
原创 音视频入门-07-认识YUV
音视频入门文章目录 YUV & YCbCr 简介YUV,是一种颜色编码方法。常使用在各个视频处理组件中。 YUV 在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。Y 表示明亮度(Luminance或Luma),也就是灰阶值,U 和 V 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。Y'CbCr 不是一种绝对的色...
2019-09-17 17:28:14
635
原创 音视频入门-06-代码画图时间
音视频入门文章目录 代码画图网上查资料的过程中,发现一些比较好的用代码画图的例子。这里记录下来,供欣赏。如果对开发过程中有所帮助就更好了。开始画图画彩虹条#include <stdio.h>#include <stdlib.h>#include "bmp/bmp.h"// 彩虹的七种颜色u_int32_t rainbowColors[] ...
2019-09-16 14:06:43
999
原创 音视频入门-05-RGB-TO-BMP使用开源库
音视频入门文章目录 RGB-TO-BMP 回顾将 RGB 数据转成 BMP 图片:1. 了解 BMP 文件格式2. 准备 BMP 文件头信息3. 准备 BMP 信息头4. BMP 存储 RGB 的顺序是 B-G-R5. BitmapInfoHeader 中的 biHeight 字段,biHeight 为正,位图自底向顶扫描,biHeight 为负,位图自顶向底扫描。6. BM...
2019-09-15 23:51:08
1025
原创 音视频入门-04-BMP图像四字节对齐的问题
音视频入门文章目录 BMP 图像四字节对齐表示 BMP 位图中像素的位元是以行为单位对齐存储的,每一行的大小都向上取整为4字节(32 位 DWORD)的倍数。如果图像的高度大于 1,多个经过填充实现对齐的行就形成了像素数组。完整存储的一行像素所需的字节数可以通过这个公式计算:每一行的末尾通过填充若干个字节的数据(并不一定为 0)使该行的长度为 4 字节的倍数。像素数组读入内...
2019-09-14 14:56:33
1157
原创 音视频入门-03-RGB转成BMP图片
音视频入门文章目录 BMP 文件格式解析BMP 文件由文件头、位图信息头、颜色信息和图形数据四部分组成。位图文件头(14个字节)位图信息头(40个字节)颜色信息图形数据- 文件头与信息头一共是 54 字节- RGB 数据部分:RGB24 文件存储的顺序是 RGB, RGB, RGB ...... RGBBMP 文件 RGB 数据存储的顺序是 BGR, BGR, BG...
2019-09-13 16:11:46
1171
原创 音视频入门-02-RGB拼图
音视频入门文章目录 图片 & 像素点 & RGB平时浏览的图片看不出像素点:图片放大时,可以看出图片是一个个像素点组成的:每个像素点的颜色可以用 RGB 表示:RGB 拼图既然图片是像素点组成的,而像素点的颜色可以用 RGB 来表示,那我们可以用 RGB 来拼出自己的图片!1. 设定目标这是我们想要使用 RGB 像素点拼出来的图片:彩虹的颜色:颜色名...
2019-09-12 21:26:27
1065
原创 音视频入门-01-认识RGB
RGB 简介 RGB 色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB 即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。RGB格式RGB16 格式RGB16 数据格式主要有两种:RGB565 和 RGB555。1. RGB5...
2019-09-09 22:04:06
1177
原创 CMake入门-04-自定义编译选项
工作环境系统:macOS Mojave 10.14.6 CMake: Version 3.15.0-rc4Hello,World! - 自定义编译选项CMake 允许为项目增加编译选项,从而可以根据用户的环境和需求选择最合适的编译方案。例如,可以将 MathFunctions 库设为一个可选的库,如果该选项为 ON ,就使用该库定义的数学函数来进行运算。否则就调用标准库中的数...
2019-08-23 16:56:22
2003
3
原创 CMake入门-03-还是HelloWorld
工作环境系统:macOS Mojave 10.14.6 CMake: Version 3.15.0-rc4Hello,World! 扩展-math 目录里的文件编译成静态库再由 main 函数调用(0) 初始化项目$ mkdir hello$ cd hello$ mkdir math build$ touch CMakeLists.txt main.cpp...
2019-08-21 17:57:53
445
原创 CMake入门-02-HelloWorld扩展
工作环境 系统:macOS Mojave 10.14.6 CMake: Version 3.15.0-rc4 Hello,World! 扩展-同一目录,多个源文件 (1) 新建 hello 目录,创建文件 CMakeLists.txt、main.cpp、MathFunctions.h、MathFunctions.cpp $ mkdir hello$ cd...
2019-08-15 17:55:09
969
原创 CMake入门-01-从HelloWorld开始
工作环境系统:macOS Mojave 10.14.6 CMake: Version 3.15.0-rc4从 Hello,World! 开始(1) 新建 hello 目录,创建文件 CMakeLists.txt、main.cpp$ mkdir hello$ cd hello$ touch CMakeLists.txt main.cpp$ ll-rw-r-...
2019-08-14 22:58:55
1043
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人