#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma pack (1)
typedef struct
{
unsigned char info[2]; //BM
unsigned int size; //
unsigned int reserve1; //0
unsigned int offset; //0x3E
unsigned int headerinfo; //0x28
unsigned int width; //
unsigned int height; //
unsigned short planes; //1
unsigned short bitpixel; //1
unsigned int compression; //0
unsigned int datasize; //
unsigned int hres; //0
unsigned int vres; //0
unsigned int colors; //0
unsigned int important; //0
unsigned int palette; //0
unsigned int bdata; //0xFFFFFF00
}BMPHEADER;
void mkbmp(int width,int height,char *data,int datasize)
{
BMPHEADER header;
FILE *fp = NULL;
memset(&header,0,sizeof(BMPHEADER));
header.info[0] = 'B';header.info[1] = 'M';
header.size = datasize + sizeof(header);
header.reserve1 = 0;
header.offset = 0x3E;
header.headerinfo = 0x28;
header.width = width;header.height = height;
header.planes = 1;header.bitpixel = 1;
header.compression = 0;
header.datasize = datasize;
header.hres = 0;header.vres = 0;
header.colors = 0;
header.important = 0;header.palette = 0;
header.bdata = 0xFFFFFF;
fp = fopen("bmp.bmp","wb");
fwrite(&header,sizeof(header),1,fp);
fwrite(data,datasize,1,fp);
fclose(fp);
}
void main()
{
BMPHEADER header;
FILE* fp;
char *buffer = "\xF0\0\0\0\x0F\0\0\0";
int width = 4,height = 2;
int bwidth = ((width + 7) / 8 + 3)/4 * 4;
int size = bwidth * height;
mkbmp(width,height,buffer,size);
fp = fopen("f:\\1.bmp","rb");
fread((void*)&header,1,sizeof(BMPHEADER),fp);
printf("info=%c%c\n",header.info[0],header.info[1]);
printf("size=%d\n",header.size);
printf("reserve1=%d\n",header.reserve1);
printf("offset=%d\n",header.offset);
printf("headerinfo=%d\n",header.headerinfo);
printf("width=%d\n",header.width);
printf("height=%d\n",header.height);
printf("planes=%d\n",header.planes);
printf("compression=%d\n",header.compression);
printf("datasize=%d\n",header.datasize);
printf("hres=%d\n",header.hres);
printf("vres=%d\n",header.vres);
printf("colors=%d\n",header.colors);
printf("important=%d\n",header.important);
printf("palette=%d\n",header.palette);
printf("bdata=%x\n",header.bdata);
fclose(fp);
}
分享到:
相关推荐
彩色位图包含了丰富的颜色信息,而单色位图(也称为黑白位图或二值位图)则只有两种颜色:黑色和白色。这种转换在某些场景中非常有用,例如在简单的显示设备上、打印或进行图像处理时。本篇将详细介绍如何在...
在图像处理领域,将彩色图片转换为黑白位图是一种常见的操作。这主要涉及到色彩空间转换、灰度化处理以及位图的理解。以下是对这个主题的详细讲解。 首先,我们需要了解彩色图片的基础。彩色图片通常使用RGB...
然而,在某些应用中,如数据传输、存储或特定的显示需求,我们可能需要将真彩位图转换为256彩色或甚至黑白位图。 256彩色位图,也被称为8位位图,它使用8位来表示每个像素的颜色,总共可以表示256种不同的颜色。...
在计算机视觉和图像处理领域,将彩色位图转换为黑白位图是一项基本操作。这个过程通常被称为二值化,即将图像中的每个像素点的颜色信息简化为两种状态:黑色或白色。这种转换对于图像分析、文字识别、模式识别等应用...
标题中的"cam_test.rar_黑白位图"表明这是一个与图像采集相关的项目,特别是涉及8位黑白位图。位图是一种常见的图像格式,其中每个像素由一个或多个位表示,8位意味着每个像素可以有256种颜色,但在黑白位图中,通常...
而256彩色位图和黑白位图则使用较少的颜色来节省存储空间和处理资源。 24位真彩位图由三个通道(红、绿、蓝)组成,每个通道有8位,总共可以组合出256 * 256 * 256 = 16,777,216种颜色。16位真彩位图则通常将每个...
在Visual C++中将彩色位图转换为黑白位图是一个涉及到图像处理和颜色空间转换的编程任务。在C++环境中,通常使用Windows图形设备接口(GDI)或更现代的Direct2D、Direct3D等库来处理图像。在这个项目中,我们可以...
建立黑白蔚图的3D模型,请在chrome浏览器中打开
在图像处理领域,转换图像颜色模式是一项常见的任务。...总之,将真彩位图转换为灰度或黑白位图是图像处理的基础操作,有着广泛的应用和实践价值。理解这些转换原理和方法,能帮助我们更好地理解和处理各种图像数据。
这个压缩包“商业编程-源码-真彩位图转化成256彩色或黑白位图的代码.zip”显然包含了用于转换真彩色位图(True Color Bitmap)到256色位图或黑白位图的源代码。这里,我们将深入探讨这种转换背后的原理和相关知识点...
在某些场景下,如旧设备显示、网络传输或内存优化,可能需要将这些高色彩深度的位图转换为256色或者黑白位图。这个“一个效果非常好的24,16bit真彩位图转化成256彩色或黑白位图的演示程序”就是针对这一需求而设计的...
而黑白位图(也称为二值图)则只有两种颜色,通常是黑色和白色。转换过程中,可以通过设置阈值来决定哪些像素应该被转化为黑色,哪些应该被转化为白色。此外,转换到其他颜色可能涉及到颜色映射,将原有的颜色映射到...
本工具可以轻松将BMP图片转换为黑白位图、RGB565、ARGB565等单片机常用格式,也可将转换后的图片还原为电脑可查看的PPM格式。是你为单片机转换图片、制作动画的实用工具。核心代码采用C语言编写,灵活高效,同时方便...
### 黑白单色位图制作教程:LCD液晶显示应用详解 #### 一、引言 在电子设备尤其是LCD液晶显示屏的应用中,黑白单色位图因其清晰度高、存储空间小、显示速度快等优点而备受青睐。本文将详细介绍如何通过特定的软件...
当我们谈论将彩色位图转换为黑白位图时,我们实际上是在进行一种称为灰度化的处理。灰度化是将彩色图像转化为单一色调的过程,通常是黑色到白色的渐变,模拟了黑白照片的效果。在C语言中实现这个过程需要对图像的...
在Android开发中,将彩色图片转化为黑白图片是常见的图像处理操作,主要应用于复古风格的滤镜效果、文本识别或是为了节省存储和显示资源。这个过程通常涉及到图像处理库的使用,比如Bitmap类以及相关的图像处理函数...
根据提供的信息,处理彩色图像转换为12864液晶显示屏所需的黑白位图,以及将该位图转换为单片机可读写数据,涉及以下步骤: 1. 图像处理成128x64点阵大小:为了适应12864液晶屏的显示要求,首先需要将任何彩色图像...
掩码通常是一个黑白位图,黑色代表透明,白色代表不透明。当我们将掩码与目标图像进行“与”运算时,黑色区域的目标图像像素将变为透明,而白色区域则保持不变。这种技术在动画软件如Flash中被广泛应用,用来创建...