<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      如何產生一個BMP文件

      [摘要]BMP 文件是一種常用的圖像文件格式,本文的例子程序產生一個簡單的 640x480 24 bit 顏色的 BMP 文件。BMP 文件的格式分兩部分,第一部分為文件頭,具體定義見源程序,第二部分為數據區,緊接著文件頭存放。 源程序: code segment assume cs:code,ds:co...
      BMP 文件是一種常用的圖像文件格式,本文的例子程序產生一個簡單的 640x480 24 bit 顏色的 BMP 文件。BMP 文件的格式分兩部分,第一部分為文件頭,具體定義見源程序,第二部分為數據區,緊接著文件頭存放。

      源程序:

      code segment
      assume cs:code,ds:code
      org 100h
      start:
      jmp install

      ;BMP 文件頭定義
      ;---------------------------------------------------------------
      BMP_HEAD DB 'BM' ;固定為 'BM'
      D_FILE_LENGTH DD 640*480*3+36h ;文件總長度,包括文件頭
      D_RESERVED DD ? ;reserved
      D_OFFSET DD 36h ;數據區開始位置
      D_BISIZE DD 28h ;bit map info' head length
      D_WIDTH DD 640 ;圖形的寬度(單位象素)
      D_HEIGHT DD 480 ;圖形的高度(單位象素)
      D_PLANES DW 1 ;圖形的平面數
      D_BIT DW 24 ;顏色位數
      D_COMPRESS DD 0 ;壓縮方式(0為不壓縮)
      D_SIZE DD 640*480*3 ;數據長度
      D_XPPM DD 0c00h ;pixels per meter (x)
      D_YPPM DD 0c00h ;pixels per meter (y)
      D_CLRUSED DD 0 ;color used
      D_CLRIMP DD 0 ;important color index
      BMP_HEAD_END EQU THIS BYTE
      ;----------------------------------------------------------------
      HANDLE DW ?
      FILE_NAME DB 'test.bmp',0
      LINE_BUF DB 640*3 dup (0)
      D_RED DB 0ffh
      D_GREEN DB 0
      D_BLUE DB 0
      install:
      mov ah,3ch ;建立文件
      xor cx,cx
      mov dx,offset file_name
      int 21h
      jnb cre_ok
      int 20h
      cre_ok:
      mov handle,ax

      mov ah,40h ;寫入文件頭
      mov bx,handle
      mov cx,offset bmp_head_end-offset bmp_head
      mov dx,offset bmp_head
      int 21h

      mov cx,480 ;寫入 480 行數據
      xor bp,bp
      b_lop:
      push cx

      mov ax,bp
      inc bp
      cmp ax,160
      jb b1
      cmp ax,320
      jb b2
      b3:
      sub ax,320
      mov si,offset d_blue
      mov di,offset d_red
      jmp short b4
      b2:
      sub ax,160
      mov si,offset d_green
      mov di,offset d_blue
      jmp short b4
      b1:
      mov si,offset d_red
      mov di,offset d_green
      b4:
      mov cx,0ffh
      mul cx
      mov cx,160 ;160
      div cx

      mov byte ptr ds:[si],0ffh
      sub byte ptr ds:[si],al
      mov byte ptr ds:[di],al

      mov cx,640
      mov di,offset line_buf
      cld
      b_lop1:
      mov al,d_red
      stosb
      mov al,d_green
      stosb
      mov al,d_blue
      stosb
      loop b_lop1

      mov ah,40h
      mov bx,handle
      mov cx,640*3
      mov dx,offset line_buf
      int 21h
      pop cx
      loop b_lop

      mov ah,3eh ;關閉文件
      int 21h
      int 20h
      CODE ENDS
      END START


      日韩精品一区二区三区高清