当前位置:  技术问答>linux和unix

请问如何在linux处理bmp图!!???哪有资料可查,或者有什么书?

    来源: 互联网  发布时间:2015-06-24

    本文导语:  很急,谢先了!!! |                Windows 3.0 位图文件格式分析     Mircosoft Windows 3.0 中的画笔(Paintbrush)工具软件为用户提供了强有力的图 形绘制和编辑功能, 例如图形的旋转、缩放、...

很急,谢先了!!!

|

               Windows 3.0 位图文件格式分析

    Mircosoft Windows 3.0 中的画笔(Paintbrush)工具软件为用户提供了强有力的图
形绘制和编辑功能, 例如图形的旋转、缩放、拼接等[1].利用这些功能可以非常方便地
生成所需要的各种复杂的彩色画面. 生成的画面以位图文件的格式存储在磁盘上. 以此
文件为资源, 在Mircosoft Windows 3.0 的支持下, 可以在任何需要的时候在任何设备
上再现该画面[2].
    在实际工作中经常遇到这样的问题: 在利用画笔工具软件生成了所需的画面之后,
能否脱离开Windows 的支持, 在其它系统中使用这些画面呢? 解决这一问题的关键在于
了解位图文件的记录格式. 只要了解位图文件的记录格式, 这一问题是容易解决的. 基
于这一目的, 文本将详细介绍Mircosoft Windows 3.0 位图文件的记录格式.
    Mircosoft Windows 3.0 位图文件(以.BMP 为扩展名) 由以下三个部分组成:
    * 位图文件头(BITMAPFILEHEADER) 数据结构
    * 位图信息(BITMAPINFO)数据结构
    * 位图阵列
一. 位图文件头的结构
    位图文件头数据结构含有位图文件的类型、大小和打印格式等信息. 在 Windows.h
中对其进行了定义:
    typedef stuct tagBITMAPFILEHEADER{
      WORD   bfType;        /* 位图文件的类型, 必须为BM.                   */
      DWORD  bfSize;        /* 位图文件的大小, 以字节为单位.               */
      WORD   bfReservedl;   /* 位图文件保留字, 必须为0.                    */
      WORD   bfReserved2;   /* 位图文件保留字, 必须为0.                    */
      DWORD  bfoffbits;     /* 位图阵列的起始位置,以相对于位图文件         */
                            /* 头的偏移量表示, 以字节为单位.               */
      }BITMAPFILEHEADER;

二. 位图信息的结构
    位图信息数据结构含有位图文件的尺寸和颜色等信息. 在Windows.h 中对其进行了
定义:
typedef stuct tagBITMAPINFO{
    BITMAPINFOHEADER bmiHeader;
    RGBQUAD    bmiColor[];
    }BITMAPINFO;
    1. bmiHeader 是一个位图信息头(BIMMAPINFOHEADER) 类型的数据结构, 用于说明
位图的尺寸. BITMAPINFOHEADER 的定义:
typedef struct tagBITMAPINFOHEADER{
  DWORD   BiSize;           /* bmiHeader 的长度, 以字节为单位.             */
  DWORD   biWidth;          /* 位图的宽度, 以象素为单位.                   */
  DWORD   biHight;         /* 位图的高度, 以象素为单位.                   */
  WORD    biPlanes;         /* 目标设备的级别, 必须为1.                    */
  WORD    biBitCount;       /* 每个象素所需的位数, 必须是1(单色).          */
                            /* 4(16色),8(256色),或24(2^24色)之一.          */
  DWORD   biCompress;       /* 位图的压缩类型, 必须是0(不压缩),            */
                            /* 1(BI_RLE8 压缩类型)或2(BI_RLE4压缩类型)之一.*/
  DWORD   biSizeImage;      /* 位图的大小, 以字节为单位.                   */
  DOWRD   biXPeIsPerMeter;  /* 位图的目标设备水平分辨率,以每米象素数为单位.*/
  DWORD   biYPeIsPerMeter;  /* 位图的目标设备水平分辨率,以每米象素数为单位.*/
  DWORD   biCIrUsed;        /* 位图实际使用的颜色表中的颜色变址数, 详见[3].*/
  DWORD   biCIrImprotant;   /* 位图显示过程中被认为重要颜色的变址数,详见[3]*/
 }BITMAPINFOHEADER;

    2. bimColor[] 是一个颜色表, 用于说明位图中的颜色. 它有若干个表项, 每一表
项是一个RGBQUAD 类型的结构, 定义了一种颜色. RGBQUAD 的定义:
  typedef       tagRGBQUAD{
      BYTE      rgbBlue;
      BYTE      rgbGreen;
      BYTE      rgbRed;
      BYTE      rgbReserved;
    }RGBQUAD;
在RGBQUAD定义的颜色中, 蓝色的亮度由rgbBlue来定, 绿色的亮度由rgbGreen来定, 红
色的亮度由rgbred来定, rgbRserved 必须为0.
    例如: 若某表项为00,00,FF,00, 那么它定义的颜色为纯红色.
    bimColor[]表项的个数由bmBitCount 来定:
    当bmBitCount=1,4,8时, bimColor[] 分别有2,16,256个项. 若某点的象素值为n,
则该象素的颜色为bimColor[]所定义的颜色.
    当bmBitCount=24时, bimColor[] 的表项为空. 位图阵列的每3 个字节代表一个
项素, 这3 个字节直接定义了象素颜色中蓝、绿、红的相对亮度,因此省去了bimColor[]
颜色表.

    
 
 

您可能感兴趣的文章:

  • 请问如何在unix批处理中得到批处理参数!read吗?急在线等待!
  • 请问:进程创建的线程是怎样运行的啊,线程的处理函数运行完了,线程就退出了吗?
  • 请问怎么处理这样的NullPointerException???
  • 请问在AIX下面,有什么程序处理后缀为.x的?
  • 请问发送数据成功后返回的ack是在内核的什么地方处理的?
  • 请问,为何咋处理TOMCAT的TOO MANY CONNECTION:3
  • 请问有没有处理.tar或者.gz文件的C/C++库呢?
  • 请问把linux下的二进制数据转到NT下面要做一些什么处理?
  • linux 9.0安装出错请问怎么处理
  • 请问如何在Bean中处理中文?
  • 请问怎么在uclinux下面处理unicode ?????
  • 请问怎么样在dos 下面有哪一个命令能取得时间放到批处理里用.
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • 请问linux下半部处理的时候是否要关闭中断?
  • 请问:signal(), sigaction()函数会不会使自已所有的进程挂起啊,(这样就等接收各种信号,进行一些处理工作啊)
  • 请问在Linux下怎样编写自动批处理文件
  • 请问,如何实现并处理JTree节点Multi-Selected?
  • 服务器监听处理100台客户端的大量UDP请求,请问用什么方法好点呢?
  • 请问gdb怎么处理带有启动参数的程序和多进程程序?
  • 请问一个socket在listen()之后如果把它close()了,那之前已经用子进程处理的连接还在不在?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问哪里有小型机的资料可以查阅??
  • 大虾,请问谁有正则表达式的资料?谢谢!
  • 请问有没有人IBM上的JCL的资料!
  • 请问哪里有COBRA的资料
  • 请问各位大虾,什么地方有Jsp学习资料?
  • 大家好!,请问哪里有 Java论文 之类的资料
  • 请问哪有关于openldap中介绍它objectclass的资料?
  • 请问哪里有 SunONE 的技术资料?
  • 请问哪里有报文截取方法的资料。
  • 请问关于syslog工作原理和源代码分析的资料
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!
  • 请问linux下GUI开发的问题!
  • 请问出现fstab文件丢失该怎么修复呀?
  • 请问这个方法如何调用?
  • 请问linux下半部处理的时候是否要关闭中断? iis7站长之家
  • 请问在网页中打开的新窗口,如何让其居中。
  • 请问我该学什么了
  • 请问安装zhcon,cxterm问题
  • 非常急! 请问daemontools 在red hat 9下的安装问题? 在线等待
  • 请问如何在一台单机上装VMware的网络访问问题?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3