`
hereson3
  • 浏览: 162955 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

C语言将raw data(rgb/rgba)写成bmp文件(bmp24或32)

阅读更多

int bmp_write(unsigned char *image, int xsize, int ysize, char *filename)
{
    unsigned char header[54] = {
      0x42, 0x4d, 0, 0, 0, 0, 0, 0, 0, 0,
        54, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32(或者24), 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0
    };
  
    long file_size = (long)xsize * (long)ysize * 4(或者3) + 54;
    header[2] = (unsigned char)(file_size &0x000000ff);
    header[3] = (file_size >> 8) & 0x000000ff;
    header[4] = (file_size >> 16) & 0x000000ff;
    header[5] = (file_size >> 24) & 0x000000ff;
  
    long width = xsize;
    header[18] = width & 0x000000ff;
    header[19] = (width >> 8) &0x000000ff;
    header[20] = (width >> 16) &0x000000ff;
    header[21] = (width >> 24) &0x000000ff;
  
    long height = ysize;
    header[22] = height &0x000000ff;
    header[23] = (height >> 8) &0x000000ff;
    header[24] = (height >> 16) &0x000000ff;
    header[25] = (height >> 24) &0x000000ff;

    char fname_bmp[128];
    sprintf(fname_bmp, "%s.bmp", filename);
  
    FILE *fp;
    if (!(fp = fopen(fname_bmp, "wb")))
      return -1;
     
    fwrite(header, sizeof(unsigned char), 54, fp);
    fwrite(image, sizeof(unsigned char), (size_t)(long)xsize * ysize * 4(或者3), fp);
  
    fclose(fp);
    return 0;
}

分享到:
评论

相关推荐

    RGBA数据转存BMP图片

    RGBA数据转存BMP图片。。。。。。。。。。。。。。。。。。。。 只有一个头文件,3个函数,包含使用即可。。。。。。。。。。。。。。。。。。

    BMP图片转RGB数组

    将BMP图片转换为RGB数组是图像处理中常见的操作,特别是在编程环境中,如VC++(Visual C++),这种操作有助于对图像进行分析、编辑或进一步处理。以下我们将详细探讨如何在VC++环境下实现这一过程。 首先,我们需要...

    RGB32图像与RGB24图像的转换

    2. **RGB32图像**:这种格式也称为ARGB32或RGBA32,同样采用24位表示RGB颜色分量,但在每个像素后面附加了一个8位的Alpha通道,用于表示透明度。因此,每个像素占用32位。 #### 转换方法 在进行图像处理时,常常...

    creator的RGB-RGBA文件格式

    在你提供的文件中,"RGBFormat.8BI"和"RGBFormat_RGBA_matsu.8BI"看起来像是Photoshop的插件或滤镜文件,可能用于扩展软件的功能,比如处理特定的RGB或RGBA格式。.8BI文件格式通常包含用于编辑图像的位图信息和处理...

    bmp轻松转为rgb565工具

    本文将深入探讨“bmp轻松转为rgb565工具”这一主题,它能够帮助开发者将bmp、png和jpg等不同格式的图像文件转换为适用于Android开机log的rgb565格式。 首先,我们来理解BMP(Bitmap)格式。BMP是一种无损的位图图像...

    将bmp文件转换为png文件的项目,附源码

    这是一个关于图像处理的项目,主要目标是将.bmp格式的位图文件转换成.png格式的PNG文件。项目提供了源代码,并且是用Visual Studio 2003开发的,因此我们可以从中学习到C++编程和图像格式转换的知识。 首先,我们要...

    RGBreader.zip_C++读取bmp rgb_bmp RGB

    4. **解析图像数据**:BMP文件中的像素数据是按行存储的,每个像素通常由3字节(RGB)或4字节(RGBA,包含透明度通道)组成。根据颜色深度,我们可以计算出图像数据的总大小。然后,我们可以逐行读取数据,每次读取...

    使用pnglib库将png转成bmp代码

    总结,使用pnglib和zlib库将PNG转成BMP涉及到图像格式的理解、库的使用以及C语言编程技巧。这个过程不仅有助于学习图像处理技术,也有助于提升对二进制文件结构和数据压缩原理的认识。通过实践这样的项目,开发者...

    BMP文件格式详解

    对于24位和32位图像,无需调色板,每个像素直接使用RGB或RGBA表示。 综上所述,BMP文件格式虽然简单,但通过不同的字段配置能够支持多种类型的图像数据存储需求,从简单的单色图像到复杂的24位或32位真彩色图像均可...

    c# rgb565 转 rgb24

    ### C# 中 RGB565 转换为 RGB24 的实现原理及代码解析 在图像处理领域,不同的颜色模式及其之间的转换是常见的需求之一。RGB565 和 RGB24 是两种常用的颜色格式。RGB565 主要用于节省存储空间,而 RGB24 提供了更...

    rgb转yuv420源代码(C语言)

    RGB到YUV420的转换是图像处理领域常见的颜色空间转换操作,广泛应用于视频编码、解码以及图像处理系统中。在C语言中实现这个转换涉及到对像素数据的逐个处理,通常包括数学计算和内存操作。下面将详细介绍这个过程。...

    basis_universal:基础通用GPU纹理编解码器

    Basis Universal是一种压缩 GPU纹理数据交换系统,支持两种高度压缩的中间文件格式(.basis或的),可以将其快速转码为GPU压缩和未压缩像素格式:ASTC 4x4 L / LA / RGB / RGBA,PVRTC1 4bpp RGB / RGBA,PVRTC2 RGB...

    bmp.rar_32 bmp_BMP 32_bmp 16_bmp 32 vc_visual c

    标题"bmp.rar_32 bmp_BMP 32_bmp 16_bmp 32 vc_visual c"暗示我们将探讨如何将32位BMP图像转换为16位BMP图像,这个过程通常涉及到颜色深度的降低,这可能导致图像质量的轻微下降,但可以显著减小文件大小。...

    易语言RGB颜色转换

    例如,可以先将十六进制字符串转换为对应的整数值,然后再进行RGB或RGBA的转换。 函数`toHex_BGR`和`toHex_RGB`则是将RGB或BGR(Blue-Green-Red)颜色值转换为对应的十六进制字符串。在易语言中,这通常涉及到将...

    RGB LED彩灯驱动控制方案

    首先,方案采用了NXP的PCA9633/34/35系列I2C总线RGB/RGBA LED闪烁/混光芯片。这些芯片能输出256灰度级别的颜色,通过调整红绿蓝三原色LED的占空比,实现色彩混合,从而达到丰富的色彩显示效果。PCA9633芯片具有4路...

    hex-to-rgb.js:一个简单的库,用于将CSS字符串从十六进制转换为RGBRGBA

    这是一小组Javascript函数,可用于从十六进制和RGB / RGBA来回转换CSS字符串。 用法 有两个函数: hexToRgb和rgbToHex 。 hexToRgb hexToRgb返回具有r , g和b属性的对象。 var color = hexToRgb ( "#1fbcff" ) ; ...

    png图片嵌入到bmp图片源码

    4. **嵌入像素数据**:遍历PNG的像素数据,将其转换成与BMP兼容的格式(如去掉alpha通道或进行颜色空间转换),然后将这些像素值写入BMP的像素数组。 5. **保存BMP文件**:使用适当的标准库函数或自定义函数,根据...

    C# Bitmap转RGB32(NI)

    3. **遍历像素并复制**: 接下来,我们需要遍历原始Bitmap的每一个像素,将其转换为RGB32格式,并复制到新Bitmap中。这可以通过LockBits和Marshal.Copy实现,以提高性能。 ```csharp Rectangle rect = new Rectangle...

    Linux 下V4l2摄像头采集图片,实现yuyv转RGB,RGB转BMP,RGB伸缩,RGB转JPEG(保存到内存中),JPEG经UDP发送功能

    ARM Cortex-A8平台Linux下V4l2摄像头采集图片程序,实现yuyv转RGB,RGB转BMP保存,RGB缩放等功能。利用jpeglib实现RGB转JPEG,并且压缩结果保存至内存中,无需再用文件操作来保存JPEG图片,JPEG经UDP发送至远程服务器...

    PicViewer RGBA32格式查看

    RGBA32格式查看,后续持续更新支持更多格式

Global site tag (gtag.js) - Google Analytics