文档库 最新最全的文档下载
当前位置:文档库 › ATL手法实现的BMP图像查看器

ATL手法实现的BMP图像查看器

ATL手法实现的BMP图像查看器
ATL手法实现的BMP图像查看器

///BMPViewer/BmpView.cpp

// BmpView.cpp : main source file for BmpView.exe

//

#include "stdafx.h"

#include

#include

#ifndef _WIN32_WCE

#include

#endif // _WIN32_WCE

#include

#include

#include

#ifndef _WIN32_WCE

#include

#endif // _WIN32_WCE

#include

#ifndef _WIN32_WCE

#include "resource.h"

#else // _WIN32_WCE

#ifndef WIN32_PLATFORM_PSPC

#include "resourcece.h"

#else // WIN32_PLATFORM_PSPC

#include "resourceppc.h"

#endif // WIN32_PLATFORM_PSPC

#endif // _WIN32_WCE

#include "View.h"

#include "props.h"

#ifndef _WIN32_WCE

#include "list.h"

#endif // _WIN32_WCE

#include "MainFrm.h"

CAppModule _Module;

int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = #ifndef _WIN32_WCE

SW_SHOWDEFAULT

#else // _WIN32_WCE

SW_SHOWNORMAL

#endif // _WIN32_WCE

)

{

CMessageLoop theLoop;

_Module.AddMessageLoop(&theLoop);

CMainFrame wndMain;

if(wndMain.CreateEx() == NULL)

{

ATLTRACE(_T("Main window creation failed!\n"));

return 0;

}

wndMain.ShowWindow(nCmdShow);

int nRet = theLoop.Run();

_Module.RemoveMessageLoop();

return nRet;

}

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)

{

#ifndef _WIN32_WCE

INITCOMMONCONTROLSEX iccx;

iccx.dwSize = sizeof(iccx);

iccx.dwICC = ICC_COOL_CLASSES | ICC_BAR_CLASSES;

BOOL bRet = ::InitCommonControlsEx(&iccx);

bRet;

ATLASSERT(bRet);

#endif // _WIN32_WCE

HRESULT hRes = _Module.Init(NULL, hInstance);

hRes;

ATLASSERT(SUCCEEDED(hRes));

int nRet = Run(lpstrCmdLine, nCmdShow);

_Module.Term();

return nRet;

}

///BMPViewer/BmpView.rc

//Microsoft Developer Studio generated resource script.

//

#include "resource.h"

#define APSTUDIO_READONL Y_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 2 resource.

//

#include "atlres.h"

/////////////////////////////////////////////////////////////////////////////

#undef APSTUDIO_READONL Y_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

#ifdef _WIN32

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#pragma code_page(1252)

#endif //_WIN32

#ifdef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// TEXTINCLUDE

//

1 TEXTINCLUDE DISCARDABLE

BEGIN

"resource.h\0"

END

2 TEXTINCLUDE DISCARDABLE

BEGIN

"#include ""atlres.h""\r\n"

"\0"

END

3 TEXTINCLUDE DISCARDABLE

BEGIN

"CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST ""res\\\\BmpView.exe.manifest""\r\n"

"\0"

END

#endif // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Toolbar

//

IDR_MAINFRAME TOOLBAR DISCARDABLE 16, 15

BEGIN

BUTTON ID_FILE_OPEN

BUTTON ID_RECENT_BTN

SEPARATOR

BUTTON ID_FILE_PRINT

BUTTON ID_FILE_PRINT_PREVIEW

BUTTON ID_FILE_PAGE_SETUP

SEPARATOR

BUTTON ID_EDIT_COPY

BUTTON ID_EDIT_PASTE

BUTTON ID_EDIT_CLEAR

SEPARATOR

BUTTON ID_VIEW_PROPERTIES

BUTTON ID_APP_ABOUT

END

/////////////////////////////////////////////////////////////////////////////

//

// Bitmap

//

IDR_MAINFRAME BITMAP MOVEABLE PURE "res\\Toolbar.bmp" /////////////////////////////////////////////////////////////////////////////

//

// Menu

//

IDR_MAINFRAME MENU PRELOAD DISCARDABLE

BEGIN

POPUP "&File"

BEGIN

MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN

MENUITEM SEPARATOR

MENUITEM "&Print...\tCtrl+P", ID_FILE_PRINT

MENUITEM "Print Pre&view", ID_FILE_PRINT_PREVIEW

MENUITEM "Pa&ge Setup...", ID_FILE_PAGE_SETUP

MENUITEM SEPARATOR

POPUP "Recent &Files"

BEGIN

MENUITEM "(empty)", ID_FILE_MRU_FILE1

, GRAYED

END

MENUITEM SEPARATOR

MENUITEM "E&xit", ID_APP_EXIT END

POPUP "&Edit"

BEGIN

MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY

MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE

MENUITEM "Cl&ear", ID_EDIT_CLEAR END

POPUP "&View"

BEGIN

MENUITEM "&Toolbar", ID_VIEW_TOOLBAR

MENUITEM "&Status Bar", ID_VIEW_STATUS_BAR

MENUITEM SEPARATOR

MENUITEM "&Properties", ID_VIEW_PROPERTIES END

POPUP "&Help"

BEGIN

MENUITEM "&About BmpView...", ID_APP_ABOUT END

END

IDR_CONTEXTMENU MENU DISCARDABLE

BEGIN

POPUP ""

BEGIN

MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY

MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE

MENUITEM "Cl&ear", ID_EDIT_CLEAR

MENUITEM SEPARATOR

MENUITEM "&Properties", ID_VIEW_PROPERTIES END

END

/////////////////////////////////////////////////////////////////////////////

//

// Icon

//

// Icon with lowest ID value placed first to ensure application icon

// remains consistent on all systems.

IDR_MAINFRAME ICON DISCARDABLE "res\\BmpView.ico" /////////////////////////////////////////////////////////////////////////////

//

// Dialog

//

IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 187, 102

STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About"

FONT 8, "MS Sans Serif"

BEGIN

DEFPUSHBUTTON "OK",IDOK,130,81,50,14

CTEXT "BmpView Application v1.0\n\n(c) Copyright 2000",

IDC_STA TIC,25,57,78,32

ICON IDR_MAINFRAME,IDC_STA TIC,55,26,18,20

GROUPBOX "",IDC_STATIC,7,7,115,88

END

IDD_PROP_PAGE1 DIALOG DISCARDABLE 0, 0, 212, 114

STYLE WS_CHILD | WS_CAPTION

CAPTION "File"

FONT 8, "MS Sans Serif"

BEGIN

LTEXT "Location:",IDC_STA TIC,5,20,30,8

LTEXT "Size:",IDC_STATIC,5,41,16,8

LTEXT "Created:",IDC_STATIC,5,60,28,8

LTEXT "Attributes:",IDC_STA TIC,5,81,32,8

LTEXT "Static",IDC_FILESIZE,40,41,170,8

LTEXT "Static",IDC_FILEDATE,40,60,170,8

LTEXT "Static",IDC_FILEATTRIB,40,81,170,8

LTEXT "Static",IDC_FILELOCATION,40,20,170,8,SS_NOTIFY END

IDD_PROP_PAGE2 DIALOG DISCARDABLE 0, 0, 212, 114

STYLE WS_CHILD | WS_CAPTION

CAPTION "Image"

FONT 8, "MS Sans Serif"

BEGIN

LTEXT "Type:",IDC_STATIC,15,10,80,8

LTEXT "Static",IDC_TYPE,100,10,105,8

LTEXT "Width:",IDC_STATIC,15,25,80,8

LTEXT "Static",IDC_WIDTH,100,25,105,8

LTEXT "Height:",IDC_STA TIC,15,40,80,8

LTEXT "Static",IDC_HEIGHT,100,40,105,8

LTEXT "Horizontal Resolution:",IDC_STATIC,15,55,80,8

LTEXT "Static",IDC_HORRES,100,55,105,8

LTEXT "V ertical Resolution:",IDC_STATIC,15,70,80,8

LTEXT "Static",IDC_VERTRES,100,70,105,8

LTEXT "Bit Depth:",IDC_STATIC,15,85,80,8

LTEXT "Static",IDC_BITDEPTH,100,85,105,8

LTEXT "Compression:",IDC_STATIC,15,100,80,8

LTEXT "Static",IDC_COMPRESSION,100,100,105,8

END

IDD_PROP_PAGE3 DIALOG DISCARDABLE 0, 0, 212, 114

STYLE WS_CHILD | WS_CAPTION

CAPTION "Screen"

FONT 8, "MS Sans Serif"

BEGIN

LTEXT "Width:",IDC_STATIC,15,25,80,8

LTEXT "Static",IDC_WIDTH,100,25,105,8

LTEXT "Height:",IDC_STA TIC,15,40,80,8

LTEXT "Static",IDC_HEIGHT,100,40,105,8

LTEXT "Horizontal Resolution:",IDC_STATIC,15,55,80,8

LTEXT "Static",IDC_HORRES,100,55,105,8

LTEXT "V ertical Resolution:",IDC_STATIC,15,70,80,8

LTEXT "Static",IDC_VERTRES,100,70,105,8

LTEXT "Bit Depth:",IDC_STATIC,15,85,80,8

LTEXT "Static",IDC_BITDEPTH,100,85,105,8

END

/////////////////////////////////////////////////////////////////////////////

//

// DESIGNINFO

//

#ifdef APSTUDIO_INVOKED

GUIDELINES DESIGNINFO DISCARDABLE

BEGIN

IDD_ABOUTBOX, DIALOG

BEGIN

LEFTMARGIN, 7

RIGHTMARGIN, 180

TOPMARGIN, 7

BOTTOMMARGIN, 95

END

IDD_PROP_PAGE1, DIALOG

BEGIN

LEFTMARGIN, 7

RIGHTMARGIN, 205

TOPMARGIN, 7

BOTTOMMARGIN, 107

END

IDD_PROP_PAGE2, DIALOG

BEGIN

LEFTMARGIN, 7

RIGHTMARGIN, 205

TOPMARGIN, 7

BOTTOMMARGIN, 107

END

IDD_PROP_PAGE3, DIALOG

BEGIN

LEFTMARGIN, 7

RIGHTMARGIN, 205

TOPMARGIN, 7

BOTTOMMARGIN, 107

END

END

#endif // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Accelerator

//

IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE

BEGIN

"C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT "O", ID_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT "P", ID_FILE_PRINT, VIRTKEY, CONTROL, NOINVERT "V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT

VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT END

#ifndef _MAC

/////////////////////////////////////////////////////////////////////////////

//

// Version

//

VS_VERSION_INFO VERSIONINFO

FILEVERSION 1,0,0,1

PRODUCTVERSION 1,0,0,1

FILEFLAGSMASK 0x3fL

#ifdef _DEBUG

FILEFLAGS 0x1L

#else

FILEFLAGS 0x0L

#endif

FILEOS 0x4L

FILETYPE 0x2L

FILESUBTYPE 0x0L

BEGIN

BLOCK "StringFileInfo"

BEGIN

BLOCK "040904b0"

BEGIN

V ALUE "Comments", "Written by Nenad Stefanovic\0"

V ALUE "CompanyName", "\0"

V ALUE "FileDescription", "BmpView Module\0"

V ALUE "FileVersion", "1, 0, 0, 1\0"

V ALUE "InternalName", "BmpView\0"

V ALUE "LegalCopyright", "Copyright 2000\0"

V ALUE "LegalTrademarks", "\0"

V ALUE "OLESelfRegister", "\0"

V ALUE "OriginalFilename", "BmpView.exe\0"

V ALUE "PrivateBuild", "\0"

V ALUE "ProductName", "BmpView Module\0"

V ALUE "ProductVersion", "1, 0, 0, 1\0"

V ALUE "SpecialBuild", "\0"

END

END

BLOCK "VarFileInfo"

BEGIN

V ALUE "Translation", 0x409, 1200

END

END

#endif // !_MAC

/////////////////////////////////////////////////////////////////////////////

//

// String Table

//

STRINGTABLE PRELOAD DISCARDABLE

BEGIN

IDR_MAINFRAME "BmpView"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_FILE_NEW "Create a new document\nNew"

ID_FILE_OPEN "Open an existing document\nOpen"

ID_FILE_CLOSE "Close the active document\nClose"

ID_FILE_SA VE "Save the active document\nSave"

ID_FILE_SA VE_AS "Save the active document with a new name\nSave As"

ID_FILE_PAGE_SETUP "Change the printing options\nPage Setup"

ID_FILE_PRINT_SETUP "Change the printer and printing options\nPrint Setup"

ID_FILE_PRINT "Print the active document\nPrint"

ID_FILE_PRINT_PREVIEW "Display full pages\nPrint Preview"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_APP_ABOUT "Display program information, version number and copyright\nAbout"

ID_APP_EXIT "Quit the application; prompts to save documents\nExit" END

STRINGTABLE DISCARDABLE

BEGIN

ID_NEXT_PANE "Switch to the next window pane\nNext Pane"

ID_PREV_PANE "Switch back to the previous window pane\nPrevious Pane" END

STRINGTABLE DISCARDABLE

BEGIN

ID_WINDOW_NEW "Open another window for the active document\nNew Window"

ID_WINDOW_ARRANGE "Arrange icons at the bottom of the window\nArrange Icons"

ID_WINDOW_CASCADE "Arrange windows so they overlap\nCascade Windows"

ID_WINDOW_TILE_HORZ "Arrange windows as non-overlapping tiles\nTile Windows"

ID_WINDOW_TILE_VERT "Arrange windows as non-overlapping tiles\nTile Windows"

ID_WINDOW_SPLIT "Split the active window into panes\nSplit"

STRINGTABLE DISCARDABLE

BEGIN

ID_EDIT_CLEAR "Removes the bitmap\nClear"

ID_EDIT_CLEAR_ALL "Erase everything\nErase All"

ID_EDIT_COPY "Copy the bitmap and put it on the Clipboard\nCopy"

ID_EDIT_CUT "Cut the selection and put it on the Clipboard\nCut"

ID_EDIT_FIND "Find the specified text\nFind"

ID_EDIT_PASTE "Insert bitmap from the Clipboard\nPaste"

ID_EDIT_REPEA T "Repeat the last action\nRepeat"

ID_EDIT_REPLACE "Replace specific text with different text\nReplace"

ID_EDIT_SELECT_ALL "Select the entire document\nSelect All"

ID_EDIT_UNDO "Undo the last action\nUndo"

ID_EDIT_REDO "Redo the previously undone action\nRedo"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_VIEW_TOOLBAR "Show or hide the toolbar\nToggle ToolBar"

ID_VIEW_STA TUS_BAR "Show or hide the status bar\nToggle StatusBar"

END

STRINGTABLE DISCARDABLE

BEGIN

A TL_IDS_SCSIZE "Change the window size"

A TL_IDS_SCMOVE "Change the window position"

A TL_IDS_SCMINIMIZE "Reduce the window to an icon"

A TL_IDS_SCMAXIMIZE "Enlarge the window to full size"

A TL_IDS_SCNEXTWINDOW "Switch to the next document window"

A TL_IDS_SCPREVWINDOW "Switch to the previous document window"

A TL_IDS_SCCLOSE "Close the active window and prompts to save the documents"

END

STRINGTABLE DISCARDABLE

BEGIN

A TL_IDS_SCRESTORE "Restore the window to normal size"

A TL_IDS_SCTASKLIST "Activate Task List"

A TL_IDS_MDICHILD "Activate this window"

END

STRINGTABLE DISCARDABLE

BEGIN

A TL_IDS_IDLEMESSAGE "Ready"

END

STRINGTABLE DISCARDABLE

BEGIN

A TL_IDS_MRU_FILE "Open this document"

STRINGTABLE DISCARDABLE

BEGIN

ID_RECENT_BTN "\nRecent Files"

ID_VIEW_PROPERTIES "Displays bitmap properties\nProperties"

END

#endif // English (U.S.) resources

/////////////////////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 3 resource.

//

CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "res\\BmpView.exe.manifest"

/////////////////////////////////////////////////////////////////////////////

#endif // not APSTUDIO_INVOKED

///BMPViewer/BmpViewCE.rc

//Microsoft eMbedded Visual C++ generated resource script.

//

#include "resourcece.h"

#define APSTUDIO_READONL Y_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 2 resource.

//

#include "atlresce.h"

/////////////////////////////////////////////////////////////////////////////

#undef APSTUDIO_READONL Y_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

#ifdef _WIN32

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#pragma code_page(1252)

#endif //_WIN32

#ifdef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// TEXTINCLUDE

//

1 TEXTINCLUDE DISCARDABLE

BEGIN

"resourcece.h\0"

END

2 TEXTINCLUDE DISCARDABLE

BEGIN

"#include ""atlres.h""\r\n"

"\0"

END

3 TEXTINCLUDE DISCARDABLE

BEGIN

"\r\n"

"\0"

END

#endif // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Toolbar

//

IDR_MAINFRAME TOOLBAR DISCARDABLE 16, 15

BEGIN

BUTTON ID_FILE_OPEN

BUTTON ID_RECENT_BTN

SEPARATOR

BUTTON ID_APP_ABOUT

BUTTON ID_EDIT_CLEAR

SEPARATOR

BUTTON ID_VIEW_PROPERTIES

BUTTON ID_APP_ABOUT

END

/////////////////////////////////////////////////////////////////////////////

//

// Bitmap

//

IDR_MAINFRAME BITMAP MOVEABLE PURE "res\\ToolbarCE.bmp" /////////////////////////////////////////////////////////////////////////////

//

// Menu

//

IDR_MAINFRAME MENU PRELOAD DISCARDABLE

BEGIN

POPUP "&File"

BEGIN

MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN

MENUITEM "E&xit", ID_APP_EXIT END

POPUP "&Edit"

BEGIN

MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY

MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE

MENUITEM "Cl&ear", ID_EDIT_CLEAR END

POPUP "&View"

BEGIN

MENUITEM "&Status Bar", ID_VIEW_STATUS_BAR

MENUITEM "&Properties", ID_VIEW_PROPERTIES END

POPUP "&Help"

BEGIN

MENUITEM "&About BmpView...", ID_APP_ABOUT END

END

/////////////////////////////////////////////////////////////////////////////

//

// Icon

//

// Icon with lowest ID value placed first to ensure application icon

// remains consistent on all systems.

IDR_MAINFRAME ICON DISCARDABLE "res\\BmpView.ico" /////////////////////////////////////////////////////////////////////////////

//

// Dialog

//

IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 187, 102

STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About"

FONT 8, "MS Sans Serif"

BEGIN

DEFPUSHBUTTON "OK",IDOK,130,81,50,14

CTEXT "BmpView Application v1.0\n\n(c) Copyright 2000",

IDC_STA TIC,25,57,78,32

ICON IDR_MAINFRAME,IDC_STA TIC,55,26,18,20

GROUPBOX "",IDC_STATIC,7,7,115,88

END

IDD_PROP_PAGE1 DIALOG DISCARDABLE 0, 0, 212, 114

STYLE WS_CHILD | WS_CAPTION

CAPTION "File"

FONT 8, "MS Sans Serif"

BEGIN

LTEXT "Location:",IDC_STA TIC,5,20,30,8

LTEXT "Size:",IDC_STATIC,5,41,16,8

LTEXT "Created:",IDC_STA TIC,5,60,28,8

LTEXT "Attributes:",IDC_STA TIC,5,81,32,8

LTEXT "Static",IDC_FILESIZE,40,41,170,8

LTEXT "Static",IDC_FILEDATE,40,60,170,8

LTEXT "Static",IDC_FILEATTRIB,40,81,170,8

LTEXT "Static",IDC_FILELOCATION,40,20,170,8,SS_NOTIFY END

IDD_PROP_PAGE2 DIALOG DISCARDABLE 0, 0, 212, 114

STYLE WS_CHILD | WS_CAPTION

CAPTION "Image"

FONT 8, "MS Sans Serif"

BEGIN

LTEXT "Type:",IDC_STATIC,15,10,80,8

LTEXT "Static",IDC_TYPE,100,10,105,8

LTEXT "Width:",IDC_STATIC,15,25,80,8

LTEXT "Static",IDC_WIDTH,100,25,105,8

LTEXT "Height:",IDC_STA TIC,15,40,80,8

LTEXT "Static",IDC_HEIGHT,100,40,105,8

LTEXT "Horizontal Resolution:",IDC_STATIC,15,55,80,8

LTEXT "Static",IDC_HORRES,100,55,105,8

LTEXT "V ertical Resolution:",IDC_STATIC,15,70,80,8

LTEXT "Static",IDC_VERTRES,100,70,105,8

LTEXT "Bit Depth:",IDC_STATIC,15,85,80,8

LTEXT "Static",IDC_BITDEPTH,100,85,105,8

LTEXT "Compression:",IDC_STATIC,15,100,80,8

LTEXT "Static",IDC_COMPRESSION,100,100,105,8

END

IDD_PROP_PAGE3 DIALOG DISCARDABLE 0, 0, 212, 114

STYLE WS_CHILD | WS_CAPTION

CAPTION "Screen"

FONT 8, "MS Sans Serif"

BEGIN

LTEXT "Width:",IDC_STATIC,15,25,80,8

LTEXT "Static",IDC_WIDTH,100,25,105,8

LTEXT "Height:",IDC_STA TIC,15,40,80,8

LTEXT "Static",IDC_HEIGHT,100,40,105,8

LTEXT "Horizontal Resolution:",IDC_STATIC,15,55,80,8

LTEXT "Static",IDC_HORRES,100,55,105,8

LTEXT "V ertical Resolution:",IDC_STATIC,15,70,80,8

LTEXT "Static",IDC_VERTRES,100,70,105,8

LTEXT "Bit Depth:",IDC_STATIC,15,85,80,8

LTEXT "Static",IDC_BITDEPTH,100,85,105,8

END

/////////////////////////////////////////////////////////////////////////////

//

// DESIGNINFO

//

#ifdef APSTUDIO_INVOKED

GUIDELINES DESIGNINFO DISCARDABLE

BEGIN

IDD_ABOUTBOX, DIALOG

BEGIN

LEFTMARGIN, 7

RIGHTMARGIN, 180

TOPMARGIN, 7

BOTTOMMARGIN, 95

END

IDD_PROP_PAGE1, DIALOG

BEGIN

LEFTMARGIN, 7

RIGHTMARGIN, 205

TOPMARGIN, 7

BOTTOMMARGIN, 107

END

IDD_PROP_PAGE2, DIALOG

BEGIN

LEFTMARGIN, 7

RIGHTMARGIN, 205

TOPMARGIN, 7

BOTTOMMARGIN, 107

END

IDD_PROP_PAGE3, DIALOG

BEGIN

LEFTMARGIN, 7

RIGHTMARGIN, 205

TOPMARGIN, 7

BOTTOMMARGIN, 107

END

END

#endif // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Accelerator

//

IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE

BEGIN

"C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT

"O", ID_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT "V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT END

#ifndef _MAC

/////////////////////////////////////////////////////////////////////////////

//

// Version

//

VS_VERSION_INFO VERSIONINFO

FILEVERSION 1,0,0,1

PRODUCTVERSION 1,0,0,1

FILEFLAGSMASK 0x3fL

#ifdef _DEBUG

FILEFLAGS 0x1L

#else

FILEFLAGS 0x0L

#endif

FILEOS 0x4L

FILETYPE 0x2L

FILESUBTYPE 0x0L

BEGIN

BLOCK "StringFileInfo"

BEGIN

BLOCK "040904b0"

BEGIN

V ALUE "Comments", "Written by Nenad Stefanovic\0"

V ALUE "CompanyName", "\0"

V ALUE "FileDescription", "BmpView Module\0"

V ALUE "FileVersion", "1, 0, 0, 1\0"

V ALUE "InternalName", "BmpView\0"

V ALUE "LegalCopyright", "Copyright 2000\0"

V ALUE "LegalTrademarks", "\0"

V ALUE "OLESelfRegister", "\0"

V ALUE "OriginalFilename", "BmpView.exe\0"

V ALUE "PrivateBuild", "\0"

V ALUE "ProductName", "BmpView Module\0"

V ALUE "ProductVersion", "1, 0, 0, 1\0"

V ALUE "SpecialBuild", "\0"

END

END

BLOCK "VarFileInfo"

BEGIN

V ALUE "Translation", 0x409, 1200

END

END

#endif // !_MAC

/////////////////////////////////////////////////////////////////////////////

//

// String Table

//

STRINGTABLE PRELOAD DISCARDABLE

BEGIN

IDR_MAINFRAME "BmpView"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_FILE_NEW "Create a new document\nNew"

ID_FILE_OPEN "Open an existing document\nOpen"

ID_FILE_CLOSE "Close the active document\nClose"

ID_FILE_SA VE "Save the active document\nSave"

ID_FILE_SA VE_AS "Save the active document with a new name\nSave As" END

STRINGTABLE DISCARDABLE

BEGIN

ID_APP_ABOUT "Display program information, version number and copyright\nAbout"

ID_APP_EXIT "Quit the application; prompts to save documents\nExit" END

STRINGTABLE DISCARDABLE

BEGIN

ID_EDIT_CLEAR "Removes the bitmap\nClear"

ID_EDIT_CLEAR_ALL "Erase everything\nErase All"

ID_EDIT_COPY "Copy the bitmap and put it on the Clipboard\nCopy"

ID_EDIT_CUT "Cut the selection and put it on the Clipboard\nCut"

ID_EDIT_FIND "Find the specified text\nFind"

ID_EDIT_PASTE "Insert bitmap from the Clipboard\nPaste"

ID_EDIT_REPEA T "Repeat the last action\nRepeat"

ID_EDIT_REPLACE "Replace specific text with different text\nReplace"

ID_EDIT_SELECT_ALL "Select the entire document\nSelect All"

ID_EDIT_UNDO "Undo the last action\nUndo"

ID_EDIT_REDO "Redo the previously undone action\nRedo"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_VIEW_STA TUS_BAR "Show or hide the status bar\nToggle StatusBar"

END

STRINGTABLE DISCARDABLE

BEGIN

A TL_IDS_SCSIZE "Change the window size"

A TL_IDS_SCMOVE "Change the window position"

A TL_IDS_SCMINIMIZE "Reduce the window to an icon"

A TL_IDS_SCMAXIMIZE "Enlarge the window to full size"

A TL_IDS_SCNEXTWINDOW "Switch to the next document window"

A TL_IDS_SCPREVWINDOW "Switch to the previous document window"

A TL_IDS_SCCLOSE "Close the active window and prompts to save the documents"

END

STRINGTABLE DISCARDABLE

BEGIN

A TL_IDS_SCRESTORE "Restore the window to normal size"

A TL_IDS_SCTASKLIST "Activate Task List"

END

STRINGTABLE DISCARDABLE

BEGIN

A TL_IDS_IDLEMESSAGE "Ready"

END

STRINGTABLE DISCARDABLE

BEGIN

A TL_IDS_MRU_FILE "Open this document"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_RECENT_BTN "\nRecent Files"

ID_VIEW_PROPERTIES "Displays bitmap properties\nProperties"

END

#endif // English (U.S.) resources

/////////////////////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 3 resource.

//

/////////////////////////////////////////////////////////////////////////////

#endif // not APSTUDIO_INVOKED

///BMPViewer/BmpViewPPC.rc

//Microsoft eMbedded Visual C++ generated resource script.

//

#include "resourceppc.h"

#define APSTUDIO_READONL Y_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 2 resource.

//

#include "atlresce.h"

/////////////////////////////////////////////////////////////////////////////

#undef APSTUDIO_READONL Y_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

#ifdef _WIN32

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#pragma code_page(1252)

#endif //_WIN32

#ifdef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// TEXTINCLUDE

//

1 TEXTINCLUDE DISCARDABLE

BEGIN

"resourceppc.h\0"

END

2 TEXTINCLUDE DISCARDABLE

BEGIN

"#include ""atlres.h""\r\n"

"\0"

END

3 TEXTINCLUDE DISCARDABLE

BEGIN

"CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST ""res\\\\BmpView.exe.manifest""\r\n"

"\0"

END

#endif // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Menubar

//

IDR_MAINFRAME MENU PRELOAD DISCARDABLE

BEGIN

POPUP "File"

BEGIN

MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN

MENUITEM "E&xit", ID_APP_EXIT

END

POPUP "Edit"

BEGIN

MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY

MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE

MENUITEM "Cl&ear", ID_EDIT_CLEAR END

POPUP "View"

BEGIN

MENUITEM "&Properties", ID_VIEW_PROPERTIES END

POPUP "Help"

BEGIN

MENUITEM "&About BmpView...", ID_APP_ABOUT END

END

/////////////////////////////////////////////////////////////////////////////

//

// Icon

//

// Icon with lowest ID value placed first to ensure application icon

// remains consistent on all systems.

IDR_MAINFRAME ICON DISCARDABLE "res\\BmpView.ico" /////////////////////////////////////////////////////////////////////////////

//

// Dialog

//

IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 129, 119

STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About"

FONT 8, "MS Sans Serif"

BEGIN

DEFPUSHBUTTON "OK",IDOK,72,98,50,14

CTEXT "BmpView Application v1.0\n\n(c) Copyright 2000",

IDC_STA TIC,25,57,78,32

ICON IDR_MAINFRAME,IDC_STA TIC,55,26,21,20

GROUPBOX "",IDC_STATIC,7,7,115,90

END

IDD_PROP_PAGE1 DIALOG DISCARDABLE 0, 0, 130, 114

STYLE WS_CHILD | WS_CAPTION

CAPTION "File"

FONT 8, "MS Sans Serif"

BEGIN

LTEXT "Location:",IDC_STA TIC,5,20,30,8

LTEXT "Size:",IDC_STATIC,5,41,16,8

bmp文件格式详解

b m p文件格式详解 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

BMP文件格式,又称为Bitmap(位图)或是DIB(Device-IndependentDevice,设备无关位图),是Windows系统中广泛使用的图像文件格式。由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。Windows的图形用户界面(graphicaluserinterfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。 下面以Notepad++为分析工具,结合Windows的位图数据结构对BMP文件格式进行一个深度的剖析。 BMP文件的数据按照从文件头开始的先后顺序分为四个部分: bmp文件头(bmpfileheader):提供文件的格式、大小等信息 位图信息头(bitmapinformation):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息 调色板(colorpalette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表 位图数据(bitmapdata):就是图像数据啦^_^ 下面结合Windows结构体的定义,通过一个表来分析这四个部分。 我们一般见到的图像以24位图像为主,即R、G、B三种颜色各用8 个bit来表示,这样的图像我们称为真彩色,这种情况下是不需要调色 板的,也就是所位图信息头后面紧跟的就是位图数据了。因此,我们 常常见到有这样一种说法:位图文件从文件头开始偏移54个字节就是

位图数据了,这其实说的是24或32位图的情况。这也就解释了我们 按照这种程序写出来的程序为什么对某些位图文件没用了。 下面针对一幅特定的图像进行分析,来看看在位图文件中这四个数据 段的排布以及组成。 我们使用的图像显示如下: 这是一幅16位的位图文件,因此它是含有调色板的。 在拉出图像数据进行分析之前,我们首先进行几个约定: 1.在BMP文件中,如果一个数据需要用几个字节来表示的话,那么该数据的存放字节顺序为“低地址村存放低位数据,高地址存放高位数据”。如数据 0x1756在内存中的存储顺序为: 这种存储方式称为小端方式(littleendian),与之相反的是大端方式(bigendian)。对两者的使用情况有兴趣的可以深究一下,其中还是有学问的。 2.以下所有分析均以字节为序号单位进行。 下面我们对从文件中拉出来的数据进行剖析: 一、bmp文件头 Windows为bmp文件头定义了如下结构体: typedef struct tagBITMAPFILEHEADER {?

BMP格式结构详解

位图文件(B it m a p-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式。Windows 3.0以前的BMP位图文件格式与显示设备有关,因此把它称为设备相关位图(d evice-d ependent b itmap,DDB)文件格式。Windows 3.0以后的BMP位图文件格式与显示设备无关,因此把这种BMP位图文件格式称为设备无关位图(d evice-i ndependent b itmap,DIB)格式,目的是为了让Windows能够在任何类型的显示设备上显示BMP位图文件。BMP位图文件默认的文件扩展名是BMP或者bmp。 6.1.2 文件结构 位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它们的名称和符号如表6-01所示。 表6-01 BMP图像文件组成部分的名称和符号 位图文件的组成结构名称符号 位图文件头(bitmap-file header)BITMAPFILEHEADE R bmfh 位图信息头(bitmap-information header)BITMAPINFOHEADE R bmih 彩色表(color table)RGBQUAD aColors[] 图像数据阵列字节BYTE aBitmapBits[ ] 位图文件结构可综合在表6-02中。 表6-02 位图文件结构内容摘要 偏移量域的名称大小内容 图像文件头0000h标识符 (Identifie r) 2 bytes两字节的内容用来识别位图的类型: ‘BM’ : Windows 3.1x, 95, NT, linux ‘BA’ :OS/2 Bitmap Array ‘CI’ :OS/2 Color Icon ‘CP’ :OS/2 Color Pointer ‘IC’ : OS/2 Icon ‘PT’ :OS/2 Pointer 0002h File Size 1 dword用字节表示的整个文件的大小 0006h Reserved 1 dword保留,设置为0 000Ah Bitmap Data Offset 1 dword从文件开始到位图数据开始之间的数据(bitmap data)之间的偏移量 000Eh Bitmap Header Size 1 dword位图信息头(Bitmap Info Header)的长度,用来 描述位图的颜色、压缩方法等。下面的长度表示: 28h - Windows 3.1x, 95, NT, … 0Ch - OS/2 1.x F0h - OS/2 2.x 0012h Width 1 dword位图的宽度,以像素为单位 0016h Height 1 dword位图的高度,以像素为单位 001Ah Planes 1 word位图的位面数 图像001Ch Bits Per Pixel 1 word每个像素的位数 1 - Monochrome bitmap

BMP图像格式详解

BMP格式图像文件详析 首先请注意所有的数值在存储上都是按“高位放高位、低位放低位的原则”,如12345678h放在存储器中就是7856 3412)。下图是导出来的开机动画的第一张图加上文件头后的16进制数据,以此为例进行分析。T408中的图像有点怪,图像是在电脑上看是垂直翻转的。在分析中为了简化叙述,以一个字(两个字节为单位,如424D就是一个字)为序号单位进行,“h”表示是16进制数。 424D 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 ...... BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。 一、图像文件头 1)1:图像文件头。424Dh=’BM’,表示是Windows支持的BMP 格式。

2)2-3:整个文件大小。4690 0000,为00009046h=36934。 3)4-5:保留,必须设置为0。 4)6-7:从文件开始到位图数据之间的偏移量。4600 0000,为00000046h=70,上面的文件头就是35字=70字节。 5)8-9:位图图信息头长度。 6)10-11:位图宽度,以像素为单位。8000 0000,为00000080h=128。 7)12-13:位图高度,以像素为单位。9000 0000,为00000090h=144。 8)14:位图的位面数,该值总是1。0100,为0001h=1。 二、位图信息头 9)15:每个像素的位数。有1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强

BMP头文件格式

bmp头文件格式 1:BMP文件组成 BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。2:BMP文件头(14字节) BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 其结构定义如下: typedef struct tagBITMAPFILEHEADER { WORDbf Type; // 位图文件的类型,必须为BMP(0-1字节) DWORD bfSize; // 位图文件的大小,以字节为单位(2-5字节) WORD bfReserved1; // 位图文件保留字,必须为0(6-7字节) WORD bfReserved2; // 位图文件保留字,必须为0(8-9字节) DWORD bfOffBits; // 位图数据的起始位置,以相对于位图(10-13字节) // 文件头的偏移量表示,以字节为单位 } BITMAPFILEHEADER; 3:位图信息头(40字节) BMP位图信息头数据用于说明位图的尺寸等信息。 typedef struct tagBITMAPINFOHEADER{ DWORD biSize; // 本结构所占用字节数(14-17字节) LONG biWidth; // 位图的宽度,以像素为单位(18-21字节)

LONG biHeight; // 位图的高度,以像素为单位(22-25字节) WORD biPlanes; // 目标设备的级别,必须为1(26-27字节) WORD biBitCount;// 每个像素所需的位数,必须是1(双色),(28-29字节) // 4(16色),8(256色)或24(真彩色)之一 DWORD biCompression; // 位图压缩类型,必须是0(不压缩),(30-33字节) // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一 DWORD biSizeImage; // 位图的大小,以字节为单位(34-37字节) LONG biXPelsPerMeter; // 位图水平分辨率,每米像素数(38-41字节) LONG biYPelsPerMeter; // 位图垂直分辨率,每米像素数(42-45字节) DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数(46-49字节) DWORD biClrImportant;// 位图显示过程中重要的颜色数(50-53字节) } BITMAPINFOHEADER; 4:颜色表 颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下: typedef struct tagRGBQUAD {

bmp图像的读取

BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。 位图文件主要分为如下3个部分: 1、文件信息头BITMAPFILEHEADER 结构体定义如下: typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; 其中: 2、位图信息头BITMAPINFOHEADER

结构体定义如下: typedef struct tagBITMAPINFOHEADER { DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER; 其中:

BMP头文件格式以及C语言读取头文件(二) 具体数据举例: 如某BMP文件开头: 424D 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 .... .... BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。 一、图像文件头 1)1:(这里的数字代表的是"字",即两个字节,下同)图像文件头。424Dh=’BM’,表示是Windows支持的BMP格式。 2)2-3:整个文件大小。4690 0000,为00009046h=36934。 3)4-5:保留,必须设置为0。 4)6-7:从文件开始到位图数据之间的偏移量。4600 0000,为00000046h=70,上面的文件头就是35字=70字节。 5)8-9:位图图信息头长度。 6)10-11:位图宽度,以像素为单位。8000 0000,为00000080h=128。 7)12-13:位图高度,以像素为单位。9000 0000,为00000090h=144。 8)14:位图的位面数,该值总是1。0100,为0001h=1。 二、位图信息头 9)15:每个像素的位数。有1(单色),4(16色),8(256色),16(64K 色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。1000为0010h=16。 10)16-17:压缩说明:有0(不压缩),1(RLE 8,8位RLE压缩),2(RLE 4,4位RLE压缩,3(Bitfields,位域存放)。RLE简单地说是采用像素数+像素值的方式进行压缩。T408采用的是位域存放方式,用两个字节表示一个像素,位域分配为r5b6g5。图中0300 0000为00000003h=3。 11)18-19:用字节数表示的位图数据的大小,该数必须是4的倍数,数值上等于位图宽度×位图高度×每个像素位数。0090 0000为 00009000h=80×90×2h=36864。

BMP图像格式分析

BMP图像格式分析 BMP图像文件格式是微软公司为其Windows环境设置的标准图像格式,而且 Windows系统软件中还同时内含了一系列支持BMP图像处理的API函数,随着Windows 在世界范围内的不断普及,BMP文件格式无疑也已经成为PC机上的流行图像文件格式。它的主要特点可以概括为:文件结构与PCX文件格式类似,每个文件只能存放一幅图像;图像数据是否采用压缩方式存放,取决于文件的大小与格式,即压缩处理成为图像文件的一个选项,用户可以根据需要进行选择。其中,非压缩格式是BMP图像文件所采用的一种通用格式。但是,如果用户确定将BMP文件格式压缩处理,则Windows设计了两种压缩方式:如果图像为16色模式,则采用RLE4压缩方式,若图像为256色模式,则采用RLE8压缩方式。同时,BMP 图像文件格式可以存储单色、16色、256色以及真彩色四种图像数据,,其数据的排列顺序与一般文件不同,它以图像的左下角为起点存储图像,而不是以图像的左上角为起点;而且BMP图像文件格式中还存在另外一个与众不同的特点,即其调色板数据所采用的数据结构中,红、绿、蓝三种基色数据的排列顺序也恰好与其它图像文件格式相反。总之,BMP图像文件格式拥有许多适合于Windows环境的新特色,而且随着Windows版本的不断更新,微软公司也在不断改进其BMP 图像文件格式,例如:当前BMP图像文件版本中允许采用32位颜色表,而且针对32位Windows 的产生,相应的API 函数也在不断地报陈出新,这些无疑都同时促成了BMP文件格式的不断风靡。但由于BMP文件格式只适合于Windows上的应用软件,而对于DOS环境中的各种应用软件则无法提供相应的支持手段,因此这无疑是阻碍BMP文件格式的流通程度超过PCX文件格式的一个重要因素。 Windows中定义了两种位图文件类型,即一般位图文件格式与设备无关位图文件格式。其中,由于设备无关位图(DIB)文件格式具有更强的灵活性与完整的图像数据、压缩方式等定义。BMP图像文件的结构可以分为如下三个部分:文件头、调色板数据以及图像数据。其中文件头的长度为固定值54个字节;调色板数据对所有不超过256色的图像模式都需要进行设置,即使是单色图像模式也不例外,但是对于真彩色图像模式,其对应的BMP文件结构中却不存在相应调色板数据的设置信息;图像数据既可以采用一定的压缩算法进行处理,也可以不必对图像数据进行压缩处理,这不仅与图像文件的大小相关,而且也与对应的图像处理软件是否支持经过压缩处理的BMP图像文件相关。以下将分别介绍BMP图像文件结构中的这三个重要组成部分。特别值得注意的是:BMP 图像文件结构设计得相当简单,这无疑有利于图像文件的处理速度,但是同时也使得 BMP图像文件格式具有一定的局限性,即一个BMP图像文件只能存储一幅图像。 BMP图像文件的文件头定义 Windows中将BMP图像文件的文件头分成两个数据结构,其中一个数据结构中包含BMP文件的类型、大小和打印格式等信息,称为BITMAPFILEHEADERl另外一个数据结构中则包含BMP文件的尺寸定义等信息,称为BITMAPINFOHEADERl 如果图像文件还需要调色板数据,则将其存放在文件头信息之后。 BITMAPFIlEHEADER数据结构在Windows.h中的定义为: typedef struCttagBITMAPFIlEHEADER { WORD bftype; DWORD bfsiZe: WORD bfReservedl; WORD bgReserved2: DWORD bfoffBits: }BITMAPFILEHEADER; 其中,bfrype在图像文件存储空间中的数据地址为0,数据类型为unsignedchar,内容为固定值“BM”,用于标志文件格式,表示该图像文件为BMP文件。 bfsize的数据地址为2,类型为unsignedlong,它以字节为单位,定义位图文件的大小。 bfReservedl与bfReserved2的数据地址分别为6和8,数据类型则都为unsignedint,二者都是BMP文件的保留字,没有任何意义,其值必须为0. bfoffBits的数据地址为10,数据类型为unsignedlong,它以字节为单位,指示图像数据在文件内的起始地址,即图像数

BMP图片格式详解

BMP图像格式详解 一.简介 BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。Windows 3.0以后的BMP图象文件与显示设备无关,因此把这种BMP图象文件格式称为设备无关位图DIB(device-independent bitmap)格式(注:Windows 3.0以后,在系统中仍然存在DDB位图,象BitBlt()这种函数就是基于DDB位图的,只不过如果你想将图像以BMP格式保存到磁盘文件中时,微软极力推荐你以DIB格式保存),目的是为了让Windows能够在任何类型的显示设备上显示所存储的图象。BMP位图文件默认的文件扩展名是BMP或者bmp(有时它也会以.DIB或.RLE作扩展名)。 二.BMP格式结构 BMP文件的数据按照从文件头开始的先后顺序分为四个部分: ◆位图文件头(bmp file header):提供文件的格式、大小等信息 ◆位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索 引等信息 ◆调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色 的映射表 ◆位图数据(bitmap data):图像数据区 BMP图片文件数据表如下:

三.BMP文件头 BMP文件头结构体定义如下: typedef struct tagBITMAPFILEHEADER { UINT16 bfType; //2Bytes,必须为"BM",即0x424D 才是Windows位 图文件 DWORD bfSize; //4Bytes,整个BMP文件的大小 UINT16 bfReserved1; //2Bytes,保留,为0 UINT16 bfReserved2; //2Bytes,保留,为0 DWORD bfOffBits; //4Bytes,文件起始位置到图像像素数据的字节偏移量} BITMAPFILEHEADER; BMP文件头数据表如下:

BMP文件格式详解

BMP文件格式详解(BMP file format)(转) 转自:https://www.wendangku.net/doc/7d16222889.html,/Jason_Yao/archive/2009/12/02/1615295.html BMP(全称Bitmap)是Window操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。 BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。 下面以Notepad++为分析工具,结合Windows的位图数据结构对BMP文件格式进行一个深度的剖析。 BMP文件的数据按照从文件头开始的先后顺序分为四个部分: bmp文件头(bmp file header):提供文件的格式、大小等信息 位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息 调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表 位图数据(bitmap data):就是图像数据啦^_^ 下面结合Windows结构体的定义,通过一个表来分析这四个部分。 我们一般见到的图像以24位图像为主,即R、G、B三种颜色各用8个bit来表示,这样的图像我们称为真彩色,这种情况下是不需要调色板的,也就是所

图像文件格式BMP文件格式详解

5.2 BMP文件格式 BMP文件格式是Microsoft Windows下最常见的图像文件格式之一,它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的像素值在文件中的存放顺序为从左到右,从下到上,也就是说,在BMP文件中首先存放的是图像的最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则是按照先左边后右边的的顺序存储的;另外一个需要关注的细节是:文件存储图像的每一行像素值时,如果存储该行像素值所占的字节数为4的倍数,则正常存储,否则,需要在后端补0,凑足4的倍数。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows 环境中运行的图形图像软件都支持BMP图像格式。 5.2.1典型的BMP图像文件由四部分组成: 1、位图头文件数据结构 主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信息; 2、位图信息数据结构 包含图象的尺寸信息、图像用几个比特数值来表示一个像素、图像是否压缩、图像所用的颜色数等信息; 3、调色板 包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板,但如果图像为真彩色,既图像的每个像素用24个比特来表示,文件中就没有这一块信息,也就不需要操作调色板。 4、位图数据 记录了位图的每一个像素值或该对应像素的颜色表的索引值,图像记录顺序是 在扫描行内是从左到右, 扫描行之间是从下到上。这种格式我们又称为Bottom_Up位图,当然与之相对的还有Up_Down形式的位图,它的记录顺序是从上到下的,对于这种形式的位图,也不存在压缩形式。 5.2.2 BMP文件结构 位图文件(bitmap file, BMP)格式是Windows采用的图像文件存储格式,在Windows 环境下运行的所有图像处理软件都支持这种格式。Windows3.0以后的BMP格式与显示设备无关,因此把这种BMP格式称为设备无关位图(Device Independentbit Bitmap , DIB)格式,Windows能够在任何类型的显示设备上显示BMP位图。BMP位图默认的文件扩展名是bmp。 1、文件结构 位图文件可看成由4个部分组成:位图文件头(Bitmap-File)、位图信息头 (Bitmap-Information Header)、彩色表(Color Table)和定义位图的字节阵列,它们的名称

实验一 BMP文件的读写操作

实验一BMP文件的读写操作 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些位图文件。 2.熟练掌握在MATLAB中如何读取位图文件。 3.掌握如何利用MATLAB来获取位图文件的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅位图文件的方法。 5.图像间如何转化。 二、实验原理及知识点 1.位图文件的分类及结构 位图是通过许多像素点表示一幅图像,每个像素具有颜色属性和位置属性。位图可以分成如下四种:线画稿 、灰度图像、索引颜色图像和真彩色图像。 位图文件(Bitmap-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式。Windows 3.0以前的BMP位图文件格式与显示设备有关,因此把它称为设备相关位图(device-dependent bitmap,DDB)文件格式。Windows 3.0以后的BMP位图文件格式与显示设备无关,因此把这种BMP位图文件格式称为设备无关位图(device-independent bitmap,DIB)格式,目的是为了让Windows能够在任何类型的显示设备上显示

BMP 位图文件。BMP 位图文件默认的文件扩展名是BMP 或者bmp 。由四部分组成,其结构如图1所示。 图1 BMP 文件结构图 2. MATLAB MATLAB 是由美国MathWorks 公司推出的用于数值计算的有力工具, 它具有相当强大的矩阵运算和操作功能,一幅数字图像在MATLAB 中可以很自然的表示成矩阵,如图2,一幅M ×N 个像素的数字图像,其像素灰度值可以用M 行、N 列的矩阵G 表示: 图2数字图像的矩阵的表示 并且MATLAB 图像处理工具箱(IPT )提供了丰富的图像处理函数,这些函数处理的是多维数组,而图像(二维数值数组)正是多维数组 的一种特例。灵活运用这些函数几乎可以完成所有的图像处理工作,??????? ?????????=MN M M N N g g g g g g g g g G 2122221112 11

4各种文件格式的不同分析

JPEG/BMP/TIF/PNG四种图像格式有什么不同? 一、BMP格式 BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。所以,目前BMP在单机上比较流行。 二、GIF格式 GIF是英文Graphics Interchange Format(图形交换格式)的缩写。顾名思义,这种格式是用来交换图片的。事实上也是如此,上世纪80年代,美国一家著名的在线信息服务机构CompuServe针对当时网络传输带宽的限制,开发出了这种GIF图像格式。GIF格式的特点是压缩比高,磁盘空间占用较少,所以这种图像格式迅速得到了广泛的应用。最初的GIF 只是简单地用来存储单幅静止图像(称为GIF87a),后来随着技术发展,可以同时存储若干幅静止图象进而形成连续的动画,使之成为当时支持2D动画为数不多的格式之一(称为GIF89a),而在GIF89a图像中可指定透明区域,使图像具有非同一般的显示效果,这更使GIF风光十足。目前Internet上大量采用的彩色动画文件多为这种格式的文件,也称为GIF89a格式文件。此外,考虑到网络传输中的实际情况,GIF图像格式还增加了渐显方式,也就是说,在图像传输过程中,用户可以先看到图像的大致轮廓,然后随着传输过程的继续而逐步看清图像中的细节部分,从而适应了用户的"从朦胧到清楚"的观赏心理。目前Internet 上大量采用的彩色动画文件多为这种格式的文件。但GIF有个小小的缺点,即不能存储超过256色的图像。尽管如此,这种格式仍在网络上大行其道应用,这和GIF图像文件短小、下载速度快、可用许多具有同样大小的图像文件组成动画等优势是分不开的。 三、JPEG格式 JPEG也是常见的一种图像格式,它由联合照片专家组(Joint Photographic Experts Group)开发并以命名为"ISO10918-1",JPEG仅仅是一种俗称而已。JPEG文件的扩展名为.jpg 或.jpeg,其压缩技术十分先进,它用有损压缩方式去除冗余的图像和彩色数据,获取得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像质量。同时JPEG还是一种很灵活的格式,具有调节图像质量的功能,允许你用不同的压缩比例对这种文件压缩,比如我们最高可以把1.37MB的BMP位图文件压缩至20.3KB。当然我们完全可以在图像质量和文件尺寸之间找到平衡点。由于JPEG优异的品质和杰出的表现,它的应用也非常广泛,特别是在网络和光盘读物上,肯定都能找到它的影子。目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快,使得Web页有可能以较短的下载时间提供大量美观的图像,JPEG同时也就顺理成章地成为网络上最受欢迎的图像格式。 四、JPEG2000格式 JPEG2000同样是由JPEG组织负责制定的,它有一个正式名称叫做"ISO15444",与JPEG相比,它具备更高压缩率以及更多新功能的新一代静态影像压缩技术。JPEG2000作为JPEG的升级版,其压缩率比JPEG高约30%左右。与JPEG不同的是,JPEG2000同时支持有损和无损压缩,而JPEG只能支持有损压缩。无损压缩对保存一些重要图片是十分有用的。JPEG2000的一个极其重要的特征在于它能实现渐进传输,这一点与GIF的"渐显"有异曲同工之妙,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图象由朦胧到清晰显示,而不必是像现在的JPEG一样,由上到下慢慢显示。此外,JPEG2000还支持所谓的"感兴趣区域"特性,你可以任意指定影像上你感兴趣区域的压缩质

(完整word版)BMP文件结构读写操作(图文)c实现

BITMAPFILEHEADER结构的各个域详细说明如下: bfType:位图文件类型,必须是0x424D,即字符串“BM”,也就是说,所有的“*.bmp”文件的头两个字节都是“BM”。

bfSize:位图文件大小,包括这14个字节。 bfReserved1, bfReserved2:Windows保留字,暂不用。 bfOffBits:从文件头到实际的位图数据的偏移字节数,图1-7中前3个部分的长度之和。 图1-7 BMP文件结构示意图 第2部分为位图信息头BITMAPINFOHEADER,也是一个结构体类型的数据结构,该结构的长度也是固定的,为40个字节(WORD为无符号16位整数,DWORD为无符号32位整数,LONG为32位整数)。其定义如下: typedef struct tagBITMAPINFOHEADER { DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed;

RGBQUAD结构的各个域的详细说明如下: rgbBlue:该颜色的蓝色分量; rgbGreen:该颜色的绿色分量; rgbRed:该颜色的红色分量; rgbReserved:保留字节,暂不用。 有些位图需要颜色表;有些位图(如真彩色图)则不需要颜色表,颜色表的长度由BITMAPINFOHEADER结构中biBitCount分量决定。对于biBitCount值为1的二值图像,每像素占1bit,图像中只有两种(如黑白)颜色,颜色表也就有21=2个表项,整个颜色表的大小为个字节;对于biBitCount值为8的灰度图像,每 像素占8bit,图像中有颜色,颜色表也就有256个表项,且每个表项的R、G、B分量相等,整个颜色表的大小为个字节;而对于biBitCount=24的真彩色图像,由于每像素3个字节中分别代表了R、G、B三分量的值,此时不需要颜色表,因此真彩色图的BITMAPINFOHEADER结构后面直接就是位图数据。 第4部分是位图数据,即图像数据,其紧跟在位图文件头、位图信息头和颜色表(如果有颜色表的话)之后,记录了图像的每一个像素值。对于有颜色表的位图,位图数据就是该像素颜色在调色板中的索引值;对于真彩色图,位图数据就是实际的R、G、B值(三个分量的存储顺序是B、G、R)。下面分别就2色、16色、256色和真彩色位图的位图数据进行说明: 对于2色位图,用1位就可以表示该像素的颜色,所以1个字节能存储8个像素的颜色值。 对于16色位图,用4位可以表示一个像素的颜色。所以一个字节可以存储2个像素的颜色值。 对于256色位图,1个字节刚好存储1个像素的颜色值。 对于真彩色位图,3个字节才能表示1个像素的颜色值。 需要注意两点: 第一,Windows规定一个扫描行所占的字节数必须是4的倍数,不足4的倍数则要对其进行扩充。假设图像的宽为biWidth个像素、每像素biBitCount个比特,其一个扫描行所占的真实字节数的计算公式如下: DataSizePerLine = (biWidth * biBitCount /8+ 3) / 4*4

BMP和GIF文件格式分析

BMP文件格式分析 简介 BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。Windows 3.0以后的BMP图象文件与显示设备无关,因此把这种BMP图象文件格式称为设备无关位图DIB(device-independent bitmap)格式(注:Windows 3.0以后,在系统中仍然存在DDB位图,象BitBlt()这种函数就是基于DDB位图的,只不过如果你想将图像以BMP格式保存到磁盘文件中时,微软极力推荐你以DIB格式保存),目的是为了让Windows能够在任何类型的显示设备上显示所存储的图象。BMP位图文件默认的文件扩展名是BMP或者bmp(有时它也会以.DIB或.RLE作扩展名)。 文件结构 位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它具有如下所示的形式。 位图文件的组成结构名称符号 位图文件头(bitmap-file header) BITMAPFILEHEADER bmfh 位图信息头(bitmap-information header) BITMAPINFOHEADER bmih 彩色表(color table) RGBQUAD aColors[] 图象数据阵列字节BYTE aBitmapBits[] (1)位图文件头 0000h 文件标识2 bytes 两字节的内容用来识别位图的类型: ‘BM’:Windows 3.1x, 95, NT, … …BA? :OS/2 Bitmap Array …CI?:OS/2 Color Icon …CP? :OS/2 Color Pointer …IC? :OS/2 Icon …PT? :OS/2 Pointer 注:因为OS/2系统并没有被普及开,所以在编程时,你只需判断第一个标识“BM”就行。 0002h File Size 1 dword 用字节表示的整个文件的大小 0006h Reserved 1 dword 保留,必须设置为0 000Ah Bitmap Data Offset 1 dword 从文件开始到位图数据开始之间的数据(bitmap data)之间的偏移量 000Eh Bitmap Header Size 1 dword 位图信息头(Bitmap Info Header)的长度,用来描述位图的颜色、压缩方法等。下面的长度表示: 28h - Windows 3.1x, 95, NT, … 0Ch - OS/2 1.x F0h - OS/2 2.x 注:在Windows95、98、2000等操作系统中,位图信息头的长度并不一定是28h,因为微软已经制定出了新的BMP文件格式,其中的信息头结构变化比较大,长度加长。所以最好不要直接使用常数28h,而是应该从具体的文件中读取这个值。这样才能确保程序的兼

bmp文件格式详解

BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。 下面以Notepad++为分析工具,结合Windows的位图数据结构对BMP文件格式进行一个深度的剖析。 BMP文件的数据按照从文件头开始的先后顺序分为四个部分: bmp文件头(bmp file header):提供文件的格式、大小等信息 位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息 调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表 位图数据(bitmap data):就是图像数据啦^_^ 下面结合Windows结构体的定义,通过一个表来分析这四个部分。 我们一般见到的图像以24位图像为主,即R、G、B三种颜色各用8 个bit来表示,这样的图像我们称为真彩色,这种情况下是不需要调色 板的,也就是所位图信息头后面紧跟的就是位图数据了。因此,我们常

常见到有这样一种说法:位图文件从文件头开始偏移54个字节就是位 图数据了,这其实说的是24或32位图的情况。这也就解释了我们按 照这种程序写出来的程序为什么对某些位图文件没用了。 下面针对一幅特定的图像进行分析,来看看在位图文件中这四个数据段的排布以及组成。 我们使用的图像显示如下: 这是一幅16位的位图文件,因此它是含有调色板的。 在拉出图像数据进行分析之前,我们首先进行几个约定: 1. 在BMP文件中,如果一个数据需要用几个字节来表示的话,那么该数据的存放字节顺序为“低地址村存放低位数据,高地址存放高位数据”。如数据0x1756在内存中的存储顺序为:

BMP位图格式详解

位图格式BMP是bitmap的缩写形式,bitmap顾名思义,就是位图也即Windows位图。它一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区组成。在系统中以BMP为扩展名保存。 打开Windows的画图程序,在保存图像时,可以看到三个选项:2色位图(黑白)、16色位图、256色位图和24位位图。 现在讲解BMP的4个组成部分: 1.文件头信息块 0000-0001 :文件标识,为字母ASCII码“BM”。 0002-0005 :文件大小。 0006-0009 :保留,每字节以“00”填写。 000A-000D :记录图像数据区的起始位置。各字节的信息含义依次为:文件头信息块大小,图像描述信息块的大小,图像颜色表的大小,保留(为01)。 2.图像描述信息块 000E-0011:图像描述信息块的大小,常为28H。 0012-0015:图像宽度。 0016-0019:图像高度。 001A-001B:图像的plane总数(恒为1)。 001C-001D:记录像素的位数,很重要的数值,图像的颜色数由该值决定。 001E-0021:数据压缩方式(数值位0:不压缩;1:8位压缩;2:4位压缩)。 0022-0025:图像区数据的大小。 0026-0029:水平每米有多少像素,在设备无关位图(.DIB)中,每字节以00H填写。 002A-002D:垂直每米有多少像素,在设备无关位图(.DIB)中,每字节以00H填写。 002E-0031:此图像所用的颜色数,如值为0,表示所有颜色一样重要。 3.颜色表 颜色表的大小根据所使用的颜色模式而定:2色图像为8字节;16色图像位64字节;256色图像为1024字节。其中,每4字节表示一种颜色,并以B(蓝色)、G(绿色)、R(红色)、alpha(32位位图的透明度值,一般不需要)。即首先4字节表示颜色号0的颜色,接下来表示颜色号1的颜色,依此类推。 4.图像数据区 颜色表接下来位是位图文件的图像数据区,在此部分记录着每点像素对应的颜色号,其记录方式也随颜色模式而定,既2色图像每点占1位;16色图像每点占4位;256色图像每点占8位;真彩色图像每点占24位。所以,整个数据区的大小也会随之变化。究其规律而言,可的出如下计算公式:图像数据信息大小=(图像宽度*图像高度*记录像素的位数)

相关文档