Lucifer丶HH 发表于 2017-3-7 21:22:10

求一个好用的图片转C语言数组(矩阵)的软件

我现在用的是Img2Lcd软件,但是效果不是很好,图片最大输出只能是800x600。
最关键的是输出灰度只能是24位真彩色,有32位真彩选项,但是生成的数组有问题不能用(第4,8,12,16列没有色彩,如图所示)
而选用24位真彩方式则可以,有没有老哥用好的软件或者方式推荐,最好附上下载链接(主要是能输出32位真彩色数组)

xiaowu191 发表于 2017-3-7 21:38:40

以下是转的

-----------------------------
常见的颜色有 8位 16位 24位 32位色,其中24位及以上称为真彩,是PC上最常用的颜色,其他基本用于嵌入式系统或一些工控领域,详情可查阅一下表格:
Bit-深度    色彩数
1         2 (monochrome)
2         4 (CGA)
4         16 (EGA)
8         256 (VGA)
16          65,536 (High Color, XGA)
24          16,777,216 (True Color/真彩色, SVGA)
32          16,777,216 (True Color + Alpha Channel/控制透明度,-游戏特效)
      关于256色,早先的一些较为形象的解释是理解为256个油漆桶/256色调色板,分配给它们编号/索引号。“叫到哪个颜色”哪个颜色就出来填充像素。因为如16色、256色的色彩数有限所以这么解释很简单易理解。然而电脑操作过程中必须经过数码编码,那么实际上256种颜色对应256个数码(二进制数值),也就是2^2 * 2^3 * 2^3 = 2^8 = 256。256色模式下电脑没有必要去按24bit处理,在当时DOS时代,处理8bit色彩比24bit要容易多了。

   当然256色中的任意一种颜色都可以用24bit表示,甚至可以用32bit,64bit表示。但是不管如何,24bit模式就意味着 17.7million种颜色。256色模式就意味着256种颜色,或者理解为24bit的17.7million种颜色中的256个颜色。
256色模式: 共8 bits (B: 2 bits; G: 3 bits; R: 3 bits)。
High color:共16 bits (B: 5 bits, G: 6 bits, R: 5 bits)。
True color:一般24bit就是8bit/通道,真彩色。
windows下的32位是R、G、B三个通道各占8位共24位,加上明度通道8位,所以是32位,24位也就是R、G、B三个通道各占6位共18位,加上明度通道6位,所以是24位。
32位色中的24位用来保存颜色信息(R8G8B8),另外的8位用来保存ALPHA信息,ALPHA属性就是透明度。
24位色也有几种表示,可以是R5G6B5,也可以是R5G5B5,等等

Lucifer丶HH 发表于 2017-3-8 13:58:43

xiaowu191 发表于 2017-3-7 21:38
以下是转的

-----------------------------


感谢,我对于图像这块24位32位的具体原理不怎么清楚。
我想问下那我那个图片转数组的结果图,第4,8,12,16列0x00是正常现象吗?
前面的灰度输出我通过开发板都可以正常在显示器上显示,就是这个32位真彩转出来的C语言数组显示总是不对,输出变成几幅重叠的黑白版的图片

xiaowu191 发表于 2017-3-8 14:15:55

我也不清楚后面8位ALPHA信息是怎么定义的;
程序那里有改动吗?32位的话是4Bytes一个像素;

另外这是周立功的图片转换软件

chun2495 发表于 2017-3-8 15:59:02

xiaowu191 发表于 2017-3-8 14:15
我也不清楚后面8位ALPHA信息是怎么定义的;
程序那里有改动吗?32位的话是4Bytes一个像素;



非常感谢!

takashiki 发表于 2017-3-8 15:59:47

xiaowu191 发表于 2017-3-7 21:38
以下是转的

-----------------------------


你这个24位的很新鲜,居然不是R8G8B8,这是什么套路?还有6位Alpha通道真是活久见

takashiki 发表于 2017-3-8 16:02:27

xiaowu191 发表于 2017-3-7 21:38
以下是转的

-----------------------------


说实在的,像这样一本正经胡说八道的,您转过来的时候不自己先过滤一遍么?

xiaowu191 发表于 2017-3-8 16:40:17

takashiki 发表于 2017-3-8 16:02
说实在的,像这样一本正经胡说八道的,您转过来的时候不自己先过滤一遍么? ...

给你赞一个

Lucifer丶HH 发表于 2017-3-8 16:44:37

xiaowu191 发表于 2017-3-8 14:15
我也不清楚后面8位ALPHA信息是怎么定义的;
程序那里有改动吗?32位的话是4Bytes一个像素;



感谢!!

takashiki 发表于 2017-3-8 16:45:46

这个32位取色是没有问题的,windows bitmap也是这样的。关键在于有的软件强制要求alpha字节为0xFF才能显示不透明,为0这个像素就完全透明了,这个图片就完全看不见了!
当然windows自己的bmp格式本身就和我们常用的并不一致,所以就别纠结对错了。bmp事实上没有16位色,它的16位色实际上只有15位,为R5G5B5。
alpha不能表示颜色的数量,只是透明度,是覆盖在其他图像或被其他图像覆盖时进行颜色混合的比例。因此,32位色实际上也只能显示16,777,216种颜色。

kebaojun305 发表于 2017-3-8 17:00:08

本帖最后由 kebaojun305 于 2017-3-8 17:01 编辑

我以前是自己写脚本转换的,批量图片转成C文件。 还有索引文件。{:titter:}
页: [1]
查看完整版本: 求一个好用的图片转C语言数组(矩阵)的软件