读取图片720x576_argb1555_36.rgb到地址char *addr
时间: 2024-10-19 14:04:12 浏览: 16
RGBFormat.rar_ARGB format_RGBFormat_RGBformat.8bi_rgbformat插件
5星 · 资源好评率100%
在C语言中,读取图片文件并将其内容存储到字符指针数组(char* addr)通常涉及两个步骤:首先打开图像文件,然后逐字节读取其内容。
假设你已经有了一个函数`readRGBFromFile()`用于处理这个过程,它会从指定路径读取图像数据,并返回指向数据的指针。这里是一个简化的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 假设你有一个名为readRGBFromFile的函数,它接受文件名和目标地址作为参数
// 并能正确读取RGB1555格式的数据到内存
char* readRGB1555Image(const char* filename, char* addr) {
FILE* file = fopen(filename, "rb"); // 打开文件以二进制模式读取
if (file == NULL) {
perror("Error opening file");
return NULL;
}
fseek(file, 0, SEEK_END); // 计算文件长度
long fileSize = ftell(file);
rewind(file);
// 检查是否足够空间存储数据
if (sizeof(char*) + fileSize > addr) {
fclose(file);
return NULL;
}
fread(addr, 1, fileSize, file); // 读取所有数据到 addr
fclose(file);
return addr;
}
int main() {
char* addr = malloc(sizeof(char) * 36 * 720 * 576); // 预估内存大小
if (addr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
char* imageAddr = readRGB1555Image("720x576_argb1555_36.rgb", addr);
if (imageAddr == NULL) {
printf("Failed to read image.\n");
free(addr);
return 1;
}
// 现在addr指向了图片数据,可以根据需要进一步操作
// 关于如何处理这个数据,取决于后续的程序逻辑,比如解码、显示等
// ...
free(addr); // 释放内存
return 0;
}
```
注意,这里的代码示例假设RGB1555格式每个像素占3位,实际计算的内存大小可能会有所不同,因为RGB1555可能包含Alpha通道。另外,你需要确认`readRGBFromFile`函数能够正确解析和填充ARGB1555格式。
阅读全文