1,4,8,16,24,32位颜色之间的转换

浅谈BMP图像文件的内部结构(长期研究的总结) 前段时间因为实验项目的需要,我和我的队友一直在研究BMP图像的内部结构,下面是自己的一些总结,希望对需要的同仁有所帮助。 一、简介:      BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文 阅读详情

 //  灰度 .299R + .587G + .114B
#define  PIXEL_GREY(r,g,b) (u8)(((u16)r*77 + (u16)g*150 + (u16)b*29) >> 8)

//  获得 R5G6B5 红色分量
INLINE u8 R565( u16 clr )
{
     
return  (clr  &   0xF800 )  >>   8 ;
}


//  获得 R5G6B5 绿色分量
INLINE u8 G565( u16 clr )
{
      
return  (clr  &   0x07E0 )  >>   3 ;
}


//  获得 R5G6B5 蓝色分量
INLINE u8 B565( u16 clr )
{
      
return  (clr  &   0x001F )  <<   3 ;
}


//  获得 A1R5G5B5 红色分量
INLINE u8 R1555( u16 clr )
{
      
return  (clr  &   0x7C00 )  >>   7 ;
}


//  获得 A1R5G5B5 绿色分量
INLINE u8 G1555( u16 clr )
{
      
return  (clr  &   0x03E0 )  >>   2 ;
}


//  获得 A1R5G5B5 蓝色分量
INLINE u8 B1555( u16 clr )
{
      
return  (clr  &   0x001F )  <<   3 ;
}


//  获得 A1R5G5B5 Alpha值
INLINE u8 A1555( u16 clr )
{
      
return  clr  &   0x8000   ?   255  :  0 ;
}


//  获得 A4R4G4B4 红色分量
INLINE u8 R4444( u16 clr )
{
      
return  (clr  &   0x0F00 )  >>   8 ;
}


//  获得 A4R4G4B4 绿色分量
INLINE u8 G4444( u16 clr )
{
      
return  (clr  &   0x00F0 );
}


//  获得 A4R4G4B4 蓝色分量
INLINE u8 B4444( u16 clr )
{
      
return  (clr  &   0xF000 )  <<   4 ;
}


//  获得 A4R4G4B4 Alpha值
INLINE u8 A4444( u16 clr )
{
      
return  (clr  &   0xF000 )  >>   12 ;
}


//  由rgb组合成一个32位的RGB
INLINE u32 RGB32( u8 r, u8 g, u8 b )
{
      
return  u32(r)  <<   16   |  u32(g)  <<   8   |  u32(b)  |   0xFF000000 ;
}


//  由argb组合成一个32位的ARGB
INLINE u32 ARGB32( u8 a, u8 r, u8 g, u8 b )
{
      
return  u32(a)  <<   24   |  u32(r)  <<   16   |  u32(g)  <<   8   |  u32(b);
}


// ------------------------------------------------------------------------------------
//   1位转换到4, 8, 16, 24, 32
// ------------------------------------------------------------------------------------
INLINE u16 _1_to_565(  const  PALETTE  * pal, u16 index )
{
      
return  ( (pal[index].Blue >> 3 )  |  ((pal[index].Green >> 2 ) << 5 )  |  ((pal[index].Red >> 3 ) << 11 ) ); 
}


INLINE u16 _1_to_1555( 
const  PALETTE  * pal, u16 index )
{
      
return  ( (pal[index].Blue >> 3 )  |  ((pal[index].Green >> 3 ) << 5 )  |  ((pal[index].Red >> 3 ) << 10 )  |   0x8000  ); 
}


INLINE u16 _1_to_4444( 
const  PALETTE  * pal, u16 index )
{
      
return  ( (pal[index].Blue >> 4 )  |  ((pal[index].Green >> 4 ) << 4 )  |  ((pal[index].Red >> 4 ) << 8 )  |   0xF000  ); 
}


INLINE 
void  _1_to_24(  const  PALETTE  * pal, u16 index, u8  & r, u8  & g, u8  & b )
{
      b 
=  pal[index].Blue;
      g 
=  pal[index].Green;
      r 
=  pal[index].Red;
}


INLINE u32 _1_to_32( 
const  PALETTE  * pal, u16 index )
{
      
return  ( pal[index].Blue  |  (pal[index].Green  <<   8 )  |  (pal[index].Red  <<   16 ) );
}


// ------------------------------------------------------------------------------------
//   4位转换到1, 8, 16, 24, 32
// ------------------------------------------------------------------------------------
INLINE u16 _4_to_565(  const  PALETTE  * pal, u16 index )
{
      
return  ( (pal[index].Blue >> 3 )  |  ((pal[index].Green >> 2 ) << 5 )  |  ((pal[index].Red >> 3 ) << 11 ) ); 
}


INLINE u16 _4_to_1555( 
const  PALETTE  * pal, u16 index )
{
      
return  ( (pal[index].Blue >> 3 )  |  ((pal[index].Green >> 3 ) << 5 )  |  ((pal[index].Red >> 3 ) << 10 )  |   0x8000  ); 
}


INLINE u16 _4_to_4444( 
const  PALETTE  * pal, u16 index )
{
      
return  ( (pal[index].Blue >> 4 )  |  ((pal[index].Green >> 4 ) << 4 )  |  ((pal[index].Red >> 4 ) << 8 )  |   0xF000  ); 
}


INLINE 
void  _4_to_24(  const  PALETTE  * pal, u16 index, u8  & r, u8  & g, u8  & b )
{
      b 
=  pal[index].Blue;
      g 
=  pal[index].Green;
      r 
=  pal[index].Red;
}


INLINE u32 _4_to_32( 
const  PALETTE  * pal, u16 index )
{
      
return  ( pal[index].Blue  |  (pal[index].Green  <<   8 )  |  (pal[index].Red  <<   16 ) );
}


// ------------------------------------------------------------------------------------
//   8位转换到16,24,32
// ------------------------------------------------------------------------------------
INLINE u16 _8_to_565(  const  PALETTE  * pal, u16 index )
{
      
return  ( (pal[index].Blue >> 3 )  |  ((pal[index].Green >> 2 ) << 5 )  |  ((pal[index].Red >> 3 ) << 11 ) ); 
}


INLINE u16 _8_to_1555( 
const  PALETTE  * pal, u16 index )
{
      
return  ( (pal[index].Blue) >> 3   |  ((pal[index].Green >> 3 ) << 5 )  |  ((pal[index].Red >> 3 ) << 10 )  |   0x8000  );
}


INLINE u16 _8_to_4444( 
const  PALETTE  * pal, u16 index )
{
      
return  ( (pal[index].Blue >> 4 )  |  ((pal[index].Green >> 4 ) << 4 )  |  ((pal[index].Red >> 4 ) << 8 )  |   0xF000  );
}


INLINE 
void  _8_to_24(  const  PALETTE  * pal, u16 index, u8  & r, u8  & g, u8  & b )
{
      b 
=  pal[index].Blue;
      g 
=  pal[index].Green;
      r 
=  pal[index].Red;
}


INLINE u32 _8_to_32( 
const  PALETTE  * pal, u16 index )
{
      
return  ( pal[index].Blue  |  (pal[index].Green  <<   8 )  |  (pal[index].Red  <<   16 )  |   0xFF000000  );
}


// ------------------------------------------------------------------------------------
//   16位转换到8,24,32
// ------------------------------------------------------------------------------------
INLINE u8 _565_to_8( u16 clr )
{
      
return  PIXEL_GREY( (((clr  &   0xF800 )  >>   11 )  *   0xFF )  /   0x1F ,
           (((clr 
&   0x7E0 )  >>   5 )  *   0xFF )  /   0x3F ,
           ((clr 
&   0x1F )  *   0xFF )  /   0x1F  ); 
}


INLINE u16 _565_to_1555( u16 clr )
{
      
return  ( (clr  &   0xF800 )  >>   1   |  (clr  >>   1 )  &   0x03E0   |  (clr  &   0x001F )  |   0x8000  );
}


INLINE u16 _565_to_4444( u16 clr )
{
      
return  ( ((clr  &   0xF800 )  >>   4 )  |  ((clr  &   0x07E0 )  >>   3 )  |  ((clr  &   0x001F )  >>   1 )  |   0xF000  );
}


INLINE 
void  _565_to_24( u16 clr, u8  & r, u8  & g, u8  & b )
{
      r 
=  (u8)((clr  &   0xF800 )  >>   11 );
      g 
=  (u8)((clr  &   0x07E0 )  >>   5 );
      b 
=  (u8)((clr  &   0x001F )  <<   3 );
}


INLINE u32 _565_to_32( u16 clr )
{
      
return ( ((clr  &   0x001F )  <<   3 )  |  ((clr  &   0x07E0 )  <<   5 )  |  ((clr  &   0xF800 )  <<   8 )  |   0xFF000000  );
}


INLINE u8 _1555_to_8( u16 clr )
{
      
return  PIXEL_GREY( (((clr  &   0x7C00 )  >>   10 )  *   0xFF )  /   0x1F ,
           (((clr 
&   0x3E0 )  >>   5 )  *   0xFF )  /   0x1F ,
           ((clr 
&   0x1F )  *   0xFF )  /   0x1F  );
}


INLINE u16 _1555_to_565( u16 clr )
{
      
return  (u16)( ((clr  &   0x7C00 ) << 1 )  |  ((clr  &   0x03E0 ) << 1 )  |  (clr  &   0x001F ) );
}


INLINE u16 _1555_to_4444( u16 clr )
{
      
return  ( ((clr  &   0x7C00 )  >>   3 )  |  ((clr  &   0x03E0 )  >>   2 )  |  ((clr  &   0x001F )  >>   1 )  |   0xF000  );
}


INLINE 
void  _1555_to_24( u16 clr, u8  & r, u8  & g, u8  & b )
{
      r 
=  (u8)((clr  &   0x7C00 )  >>   10 );
      g 
=  (u8)((clr  &   0x03E0 )  >>   5 );
      b 
=  (u8)((clr  &   0x001F )  <<   3 );
}


INLINE u32 _1555_to_32( u16 clr )
{
      
return ( ((clr  &   0x001F )  <<   3 )  |  ((clr  &   0x03E0 )  <<   6 )  |  ((clr  &   0x7C00 )  <<   9 )  |   0xFF000000  );
}


INLINE u16 _4444_to_565( u16 clr )
{
      
return  ( ((clr  &   0x000F )  <<   1 )  |  ((clr  &   0x00F0 )  <<   3 )  |  ((clr  &   0x0F00 )  <<   4 ) );
}


INLINE u16 _4444_to_1555( u16 clr )
{
      
return  ( ((clr  &   0x000F )  <<   1 )  |  ((clr  &   0x00F0 )  <<   2 )  |  ((clr  &   0x0F00 )  <<   3 )  |   0x8000  );
}


INLINE 
void  _4444_to_24( u16 clr, u8  & r, u8  & g, u8  & b )
{
      r 
=  (u8)((clr  &   0x0F00 )  >>   8 );
      g 
=  (u8)((clr  &   0x00F0 )  >>   4 );
      b 
=  (u8)((clr  &   0x000F )  <<   4 );
}


INLINE u32 _4444_to_32( u16 clr )
{
      
return  ( ((clr  &   0x000F )  <<   4 )  |  ((clr  &   0x00F0 )  <<   8 )  |  ((clr  &   0x0F00 )  <<   12 )  |  ((clr  &   0xF000 )  <<   16 ) );
}


// ------------------------------------------------------------------------------------
//   24位转换到8,16,32
// ------------------------------------------------------------------------------------
INLINE u8 _24_to_8( u8 r, u8 g, u8 b )
{
      
return  PIXEL_GREY( b, g, r );
}


INLINE u16 _24_to_565( u8 r, u8 g, u8 b )
{
      
return  ( ((u16)(r >> 3 ) << 11 )  |  ((u16)(g >> 2 ) << 5 )  |  ((u16)b >> 3 ) );
}


INLINE u16 _24_to_1555( u8 r, u8 g, u8 b )
{
      
return  (  0x8000   |  ((u16)(r >> 3 ) << 10 )  |  ((u16)(g >> 3 ) << 5 )  |  ((u16)b >> 3 ) ); 
}


INLINE u16 _24_to_4444( u8 r, u8 g, u8 b )
{
      
return  (  0xF000   |  ((u16)(r >> 4 ) << 8 )  |  ((u16)(g >> 4 ) << 4 )  |  ((u16)b >> 4 ) ); 
}


INLINE u32 _24_to_32( u8 r, u8 g, u8 b )
{
      
return  (  0xFF000000   |  ((u16)r  <<   16 )  |  ((u16)g  <<   8 )  |  (u16)b );
}


// ------------------------------------------------------------------------------------
//   32位转换到8,16,24
// ------------------------------------------------------------------------------------
INLINE u8 _32_to_8( u32 clr )
{
      
return  PIXEL_GREY( (clr  &   0xFF ), ((clr  &   0xFF00 )  >>   8 ), ((clr  &   0xFF0000 )  >>   16 ) );
}


INLINE u16 _32_to_565( u32 clr )
{
      
return  (u16)( ((clr  &   0xF8 )  >>   3 )  |  ((clr  &   0xFC00 )  >>   5 )  |  ((clr  &   0xF80000 )  >>   8 ) );
}


INLINE u16 _32_to_1555( u32 clr )
{
      
return  (u16)( ((clr  &   0xF8 )  >>   3 )  |  ((clr  &   0xF800 )  >>   6 )  |  ((clr  &   0xF80000 )  >>   9 )  |   0x8000  );
}


INLINE u16 _32_to_4444( u32 clr )
{
      
return  (u16)( ((clr  &   0xF0 )  >>   4 )  |  ((clr  &   0xF000 )  >>   8 )  |  ((clr  &   0xF00000 )  >>   12 )  |  ((clr  &   0xF0000000 )  >>   16 ) );
}


INLINE 
void   _32_to_24( u32 clr, u8  & r, u8  & g, u8  & b )
{
      b 
=  (u8)(clr  &   0xFF );
      g 
=  (u8)((clr  &   0xFF00 )  >>   8 );
      r 
=  (u8)((clr  &   0xFF0000 )  >>   16 );
}

Linux系统中BMP图像显示的完整实现指南 BMP文件格式主要由文件头(BITMAPFILEHEADER)、信息头(BITMAPINFOHEADER)以及像素数据三部分组成。文件头负责存储文件的类型、大小等元数据,信息头则包含了图像的宽度、高度、颜色深度等关键信息,像素数据部分则存储了图像的具体颜色信息。颜色深度,也称为位深度,是指在一个像素点上记录颜色信息的位数,它决定了我们可以显示多少种颜色。在计算机图形学中,颜色深度是描述图像质量的关键参数之一。每增加一位深度,颜色的总数就会翻倍,因为2的幂次方决定了颜色的总数。 阅读详情

相关推荐

32位色下运行需16位色程序

32位色下运行需16位色程序 小程序,有的软件需要16位色.但又不想改的话.就用这个软件吧,相当实用10K都不到

C语言:8位、16位、32位数据转换

如何把两个八位的16进制结合成一个16位的16进制,C语言printf输出十六进制16进制 C语言中的二进制数、八进制数和十六进制数 4位16进制和八位16进制转换 两个16位有符号整数转换为32位有符号整数的方法

位文杰的博客 1万+

Ubuntu环境下rknn-toolkit2的安装与兼容性解析

本文详细解析了在Ubuntu系统上安装瑞芯微rknn-toolkit2工具链的完整流程与关键注意事项。文章重点剖析了rknn-toolkit2与旧版rknn-toolkit的核心兼容性问题,强调两者在API、模型格式及运行时库上互不兼容,并推荐使用Conda虚拟环境进行隔离管理,为RK3566、RK3588等开发板的AI模型部署提供清晰的实践指南。

weixin_29041767的博客 375

16位增强色RGB转换为24/32位真色彩

biBitCount=16 表示位图最多有65536种颜色。每个色素用16位(2个字节)表示。这种格式叫作高彩色,或叫增强型16位色,或64K色。它的情况比较复杂,当biCompression成员的值是BI_RGB时,它没有调色板。16位中,最低的5位表示蓝色分量,中间的5位表示绿色分量,高的5位表示红色分量,一共占用了15位,最高的一位保留,设为0。这种格式也被称作555 16位位图。如果b

Enbiting的专栏 8783

2019美亚杯团体赛刷题 部分题解(1-42、106-116)

文章目录写在前面使用工具刷题1.在黑客路由器里,有一台设备的MAC地址为00:11:6B:47:4D:55,请问它的IP地址是什么?2.在黑客路由器里,发现一设备的IP地址为192.168.0.103,请问该设备为如下哪一个:3.警方已经查证所有连接此router的设备都归黑客所有,根據黑客路由器的訊息,下列哪组(设备---ip)是错误的:4.Hacker现场检获的Windows主机硬盘已成功取证并制作成镜像Win1.E01,下列哪个是其硬盘证据文件的MD5哈希值。5.MD5hash算法会产生一个什么大小的

7ruth0hn的博客 7545

STM32F103 CAN通信避坑指南:从标准库配置到收发测试的完整流程

本文详细介绍了STM32F103 CAN通信的实现流程,从标准库配置到收发测试,帮助开发者避开常见陷阱。内容涵盖硬件连接、波特率计算、过滤器配置及错误处理等关键环节,提供实用的代码示例和调试技巧,确保CAN通信的稳定性和可靠性。

weixin_30627341的博客 324

前端需要了解的颜色模型,RGB、HSL和HSV

颜色模型,是用来表示颜色的数学模型。比如最常见的RGB模型,使用红绿蓝三色来表示颜色。一般的颜色模型,可以按照如下分类:面向硬件设备的颜色模型:RGB,CMYK,YCrCb。面向视觉感知的颜色模型:HSL,HSV(B),HSI,Lab。不同的颜色模型有不同的应用场景,而RGB模型适合于显示器这样的的设备。其中,RGBHSL,即在前端页面中只有这两种模型的颜色值可以有效展示出来。而对于HSV,则是我们在创建颜色选择器插件时所需要了解的一种模型。目前,chrome浏览器,实现H5。

jh035512的博客 2860

18650电池组流体直冷热管理仿真:COMSOL多物理场耦合建模路线与实战策略

在动力电池与储能系统的热管理设计中,多物理场耦合仿真已成为平衡性能与成本的关键工具。液冷方案的换热极限促使行业转向制冷剂直冷技术,而两相流与电池产热的强耦合特性,使得基于COMSOL的数值建模成为评估系统温升与流动分配的重要手段。工程实践中,电化学-热-流场全耦合模型与集总电池-流场简化模型各有适用场景,前者揭示电池内部微观机理,后者则以高计算效率支撑包级方案迭代。通过合理简化几何、标定内阻与熵热系数、设置等效换热边界,仿真能够准确预测直冷系统在快充或大倍率放电下的温度均匀性与压降特性,从而指导流道优化与制

weixin_33585822的博客 314

图片8位, 16位,24位,32位原理,以及如何进行补位互转

图片8位, 16位,24位,32位原理,以及如何进行补位互转

优倍素材网技术总结 2736

RTX4090上跑CenterNet训练

参考实现 url=https://github.com/xingyizhou/CenterNet.git commit_id=5b1a490a52da57d3580e80b8bb4bbead9ef2af96

遗失的神庙 1622

【推荐100个unity插件之7】使用BehaviorDesigner插件制作BOSS的AI行为树

Behavior Designer是一个行为树插件,是一款为了让策划,程序员,美术人员方便使用的可视化编辑器。Behavior Designer提供了强大的AP1可以让你轻松的创建tasks(任务),配合uScript和PlayMaker这样的插件,可以不费吹灰之力就能够创建出强大的Al系统,而无需写行代码。(不懂PlayMaker的,我后面在单独出文章介绍一下,可以期待一下)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 6568

16位BMP图转32位BMP图

最近在做OCR识别,在本机上做好的程序在服务器上的VM虚拟机上出现了问题,进行调试,发现原来服务器的VM虚拟机里面的颜色是16位色彩的,截的图也默认是16位,而tesseract是不识别16位的,因此我就想把16位改成32位。本来我以为16位就是两种颜色共用1个字节,以为也是rgba的格式,结果在改写的过程发现转换的结果一直不对,经过4!变换对应,我意识到我的思路出现问题,通过查找,发现16位是5

shenmafuyunnan的专栏 3174

大模型在电力交易功率预测中的应用:短期,超短期,中长期的完整解决方案代码详解

本文介绍了基于大模型的电力交易功率预测系统,该系统覆盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1月)三个时间尺度。文章详细阐述了数据准备与特征工程,包括多源数据集成和特征重要性分析。在模型构建方面,采用了Temporal Fusion Transformer (TFT)模型进行超短期预测,Informer模型进行短期预测,以及N-HiTS模型进行中长期预测。此外,文章还探讨了概率预测与风险分析,并介绍了模型部署与交易策略集成的实现。最后,文章总结了系统的贡献,并展望了未来发展方向,如市

专注AI大模型,软件混淆,授权 1261

c++将24位bmp转8位bmp灰度, 8位bmp灰度反色,24位转3张8位bmp灰度图

首先我们需要定义组成bmp的四部分的结构体 #pragma once using BYTE = unsigned char;//1 using WORD = unsigned short;//2 using DWORD = unsigned int;//4 using LONG = unsigned long;//4 #pragma pack(push) #pragma pack(2)//保证编译器为该数据结构分配内存每次是2个字节 struct BITMAPFILEHEADER { W.

qq_58665528的博客 2819

基于深度学习YOLOv10的人脸表情识别系统(附完整资源+PySide6界面+训练代码)

本文介绍了如何基于YOLOv10实现一个人脸表情识别系统。我们从数据集准备、模型训练到PySide6界面实现进行了详细的讲解。通过该系统,用户可以实时检测和分类人脸表情,为情感分析、智能交互等应用场景提供支持。

YOLO 1053

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

将png转换为bmp格式

<?php $im = imagecreatefrompng("ok.png"); imagebmp($im,'ok.bmp',24); //imagedestroy($im); /** * 创建bmp格式图片 * * @author: legend(legendsky@hotmail.com) * @link: http://www.ugia.cn/?p=96 * @descr

chengfei112233的专栏 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

位图

//备忘: //Texture Mapping Functions void CCY457OpenGLView::LoadGLTextures() { //Create Texture Names glGenTextures(3, m_Texture); LoadTexture("Apple.bmp",0); LoadTexture("Fauve.

林一鸣的专栏 1048

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

php 生成 bmp,[GD]生成bmp格式的图片(imagebmp)_PHP教程

GD库里没有生成bmp图片的函数,所以自己写了一个,这个函数尚有一个压缩算法没有写,不过已经够用了。需要的同学可以看看。int imagebmp ( resource image [, string filename [, int $bit [, int compression]]] )$im: 图像资源$filename: 如果要另存为文件,请指定文件名,为空则直接在浏览器输出$bit: 图像质...

weixin_39856269的博客 218

详细介绍一下CImage中的GetBPP()

书籍:《Visual C++ 2017从入门到精通》的4.2 按钮控件环境:visual studio 2022内容:[例 4.2]制作图片按钮说明:以上内容大部分来自腾讯元宝。

felicity_one的博客 1090

后缀为php但是bin文件夹,php转换图片为.bin文件(2)

这段就是php_function的代码,刚实现了把bmp所有的数据读出来,并且输出到了浏览器中。这时候脑子一抽筋,就去翻看了一下php中其他图片格式的代码转换成bmp的代码:/*int imagebmp ( resource image [, string filename [, int $bit [, int compression]]] )$im: 图像资源$filename: 如果要另存为文...

weixin_42510360的博客 368

c/c++图片转换为字符串画_图片转字符串

本文主要介绍了将BMP图像转换为字符串画的一般过程,包括图像的缩放、灰度化和C++读取处理等步骤。

yegu001的博客 756

实验二 图像文件的读写和转换(BMP转YUV)

一、实验基本原理 1.    BMP文件格式 BMP(全称Bitmap) 是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,在绝大多数应用中不采用其他任何压缩,因此BMP文件所占用的空间很大。BMP文件的图像深度可选 lbit、4bit、8bit、16bit及24bit。BM

Lynn_yq的博客 3605

彩屏图像取模,BMP图像提取程序示例

  由于屏幕的多种类性, 我始终没有使用市面上的那种取模软件, 我始终感觉数据可能不对.因为我的屏幕的要求比例是R:G:B(5:6:5),16位色,一个像素2个字节保存,所以总觉得应该自己写一个来做这种转换工作的软件.  今天写了个小程序,在彩屏上显示出来的效果很好. 程序是为我的屏幕的数据类型量身生成的,写在这里只是保存一下,不然久了,我又不知道代码之前的版本, 或是又找不到了.  程序解析BM...

weixin_34289454的博客 2327
上一篇: 使用MDI时,有时StatusBar窗格文本消失的处理
VChen
博客等级 码龄23年 1粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值