技术咨询:该unsigned char数组存储的图片格式是什么?如何加密图片为该格式?
问题解答
1. 图片格式判断
这段代码存储的是PNG格式的图片。判断依据是数组开头的8个字节:0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,这是PNG文件的标准文件签名(magic number),是PNG格式的专属标识。
2. 转换(含加密)为该格式的步骤
这里的“加密转换为此格式”核心是完成「图片加密(可选)+ 二进制数据转C语言数组」两个操作,具体步骤如下:
步骤1:准备原始PNG图片
如果目标图片不是PNG格式,先用画图、Photoshop等工具将其导出为PNG格式文件。
步骤2:(可选)对PNG文件进行加密
若需要加密,可选用对称加密算法(如AES)处理PNG的二进制数据。比如用C语言的OpenSSL库读取PNG文件字节流,执行加密逻辑,得到加密后的二进制数据。
步骤3:将二进制数据转为unsigned char数组格式
把(加密后的)PNG二进制数据转换成示例中的数组形式,有两种高效方式:
- 小文件手动转换:逐个读取文件字节,将每个字节转为
0xXX格式的十六进制字符串,用逗号分隔后放入数组。 - 脚本批量转换(推荐):用Python脚本自动生成代码,示例如下:
with open("target_file.png", "rb") as f: raw_data = f.read() # 生成符合格式的C数组代码 array_code = f"unsigned char LogoPIC_data[] = {{ {', '.join(f'0x{b:02x}' for b in raw_data)} }};" print(array_code)
运行脚本后,会直接输出和示例结构一致的C语言数组代码。
关键注意点
- 如果是加密后的数组,在使用时需要先对数组数据执行解密操作,再还原为PNG文件才能正常显示。
- 你提供的示例代码是截断状态,完整的数组需要包含PNG文件的全部字节数据。
内容的提问来源于stack exchange,提问作者Vicktor Mybe
相关产品推荐
相关产品推荐

