zhoyan 2002-08-30 10:21:21
506 8 打赏 收藏 举报
8 条回复
future0723 2002-08-30
  • 打赏
  • 举报
future0723 2002-08-30
  • 打赏
  • 举报
future0723 2002-08-30
文件头:typedef struct tagBITMAPFILEHEADER {
WORD bfType; //must be "0x424D"
DWORD bfSize; //指定文件大小,包括这14字节。
WORD bfReserved1; //保留,不考虑
WORD bfReserved2; //保留,不考虑
DWORD bfOffBits; //文件头到图象数据的偏移字节
位图信息头:typedef struct tagBITMAPINFOHEADER {
DWORD biSize; //本结构长度,40字节
LONG biWidth; //图像宽度,像素
LONG biHeight; //图像高度,像素
WORD biPlanes; //一定是1,不考虑
WORD biBitCount; //表示颜色的位数:1,4,8,24,32
DWORD biCompression; //是否压缩
DWORD biSizeImage; //位图实际占用的字节数
LONG biXPelsPerMeter; //水平分辨率,单位是像素
LONG biYPelsPerMeter; //垂直.................
DWORD biClrUsed; //本图像实际用到的颜色数
DWORD biClrImportant; //重要的颜色数,如果为0,则全部
typedef struct tagLOGPALETTE {
WORD palVersion; //版本
WORD palNumEntries; //颜色结构的数目
PALETTEENTRY palPalEntry[1]; //下面的结构

typedef struct tagRGBQUAD {
BYTE rgbBlue; //该颜色的蓝色分量。
BYTE rgbGreen; .....
BYTE rgbRed; .....
BYTE rgbReserved; //保留

  • 打赏
  • 举报
kingzai 2002-08-30
try this code,diplay BMP file
VOID Load(CFile &File) {
if (!File.Read(&bmfh, sizeof(BITMAPFILEHEADER))) {
throw "Failed to read file";
if (bmfh.bfType != *(WORD *)"BM") {
throw "Invalid BMP file";

int bmih_size= bmfh.bfSize - sizeof(BITMAPFILEHEADER);
bmih= (BITMAPINFOHEADER *)new BYTE[bmih_size];

if (!bmih) {
throw "Failed to allocate memory";
if (!File.Read(bmih, bmih_size)) {
throw "Failed to read file";
if (bmih->biCompression != BI_RGB || bmih->biCompression != BI_BITFIELDS)
throw "Unsupported compression";

VOID Draw(CDC *pDC, INT x= 0, INT y= 0) {
INT result= StretchDIBits(
x, y, bmih->biWidth, bmih->biHeight,
0, 0, bmih->biWidth, bmih->biHeight,
GetBits(), &bmi,

if (result == GDI_ERROR) {
throw "Failed to StretchDIBits";
  • 打赏
  • 举报
wq_quake 2002-08-30
  • 打赏
  • 举报
zzq_fortu 2002-08-30
  • 打赏
  • 举报
zhoyan 2002-08-30
  • 打赏
  • 举报
zzq_fortu 2002-08-30

.NET Framework Developer's Guide

Types of BitmapsA bitmap is an array of bits that specify the color of each pixel in a rectangular array of pixels. The number of bits devoted to an individual pixel determines the number of colors that can be assigned to that pixel. For example, if each pixel is represented by 4 bits, then a given pixel can be assigned one of 16 different colors (2^4 = 16). The following table shows a few examples of the number of colors that can be assigned to a pixel represented by a given number of bits.

Bits per pixel Number of colors that can be assigned to a pixel
1 2^1 = 2
2 2^2 = 4
4 2^4 = 16
8 2^8 = 256
16 2^16 = 65536
24 2^24 = 16, 777, 216

Disk files that store bitmaps usually contain one or more information blocks that store information such as the number of bits per pixel, number of pixels in each row, and number of rows in the array. Such a file might also contain a color table (sometimes called a color palette). A color table maps numbers in the bitmap to specific colors. The following illustration shows an enlarged image along with its bitmap and color table. Each pixel is represented by a 4-bit number, so there are 2^4 = 16 colors in the color table. Each color in the table is represented by a 24-bit number: 8 bits for red, 8 bits for green, and 8 bits for blue. The numbers are shown in hexadecimal (base 16) form: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.

Look at the pixel in row 3, column 5 of the image. The corresponding number in the bitmap is 1. The color table tells us that 1 represents the color red so the pixel is red. All the entries in the top row of the bitmap are 3. The color table tells us that 3 represents blue, so all the pixels in the top row of the image are blue.

Note Some bitmaps are stored in bottom-up format; the numbers in the first row of the bitmap correspond to the pixels in the bottom row of the image.
A bitmap that stores indexes into a color table is called a palette-indexed bitmap. Some bitmaps have no need for a color table. For example, if a bitmap uses 24 bits per pixel, that bitmap can store the colors themselves rather than indexes into a color table. The following illustration shows a bitmap that stores colors directly (24 bits per pixel) rather than using a color table. The illustration also shows an enlarged view of the corresponding image. In the bitmap, FFFFFF represents white, FF0000 represents red, 00FF00 represents green, and 0000FF represents blue.

Graphics File Formats
There are many standard formats for saving bitmaps in disk files. GDI+ supports the graphics file formats described in the following paragraphs.


BMP is a standard format used by Windows to store device-independent and application-independent images. The number of bits per pixel (1, 4, 8, 15, 24, 32, or 64) for a given BMP file is specified in a file header. BMP files with 24 bits per pixel are common. BMP files are usually not compressed and therefore are not well suited for transfer across the Internet.

Graphics Interchange Format (GIF)

GIF is a common format for images that appear on Web pages. GIFs work well for line drawings, pictures with blocks of solid color, and pictures with sharp boundaries between colors. GIFs are compressed, but no information is lost in the compression process; a decompressed image is exactly the same as the original. One color in a GIF can be designated as transparent, so that the image will have the background color of any Web page that displays it. A sequence of GIF images can be stored in a single file to form an animated GIF. GIFs store at most 8 bits per pixel, so they are limited to 256 colors.

Joint Photographic Experts Group (JPEG)

JPEG is a compression scheme that works well for natural scenes such as scanned photographs. Some information is lost in the compression process, but often the loss is imperceptible to the human eye. JPEGs store 24 bits per pixel, so they are capable of displaying more than 16 million colors. JPEGs do not support transparency or animation.

The level of compression in JPEG images is configurable, but higher compression levels (smaller files) result in more loss of information. A 20:1 compression ratio often produces an image that the human eye finds difficult to distinguish from the original. The following illustration shows a BMP image and two JPEG images that were compressed from that BMP image. The first JPEG has a compression ratio of 4:1 and the second JPEG has a compression ratio of about 8:1.

JPEG compression does not work well for line drawings, blocks of solid color, and sharp boundaries. The following illustration shows a BMP along with two JPEGs and a GIF. The JPEGs and the GIF were compressed from the BMP. The compression ratio is 4:1 for the GIF, 4:1 for the smaller JPEG, and 8:3 for the larger JPEG. Note that the GIF maintains the sharp boundaries along the lines, but the JPEGs tends to blur the boundaries.

JPEG is a compression scheme, not a file format. JPEG File Interchange Format (JFIF) is a file format commonly used for storing and transferring images that have been compressed according to the JPEG scheme. JFIF files displayed by Web browsers use the .jpg extension.

Exchangeable Image File (EXIF)

EXIF is a file format used for photographs captured by digital cameras. An EXIF file contains an image that is compressed according to the JPEG specification. An EXIF file also contains information about the photograph (date taken, shutter speed, exposure time, and so on) and information about the camera (manufacturer, model, and so on).

Portable Network Graphics (PNG)

The PNG format retains many of the advantages of the GIF format but also provides capabilities beyond those of GIF. Like GIF files, PNG files are compressed with no loss of information. PNG files can store colors with 8, 24, or 48 bits per pixel and grayscales with 1, 2, 4, 8, or 16 bits per pixel. In contrast, GIF files can use only 1, 2, 4, or 8 bits per pixel. A PNG file can also store an alpha value for each pixel, which specifies the degree to which the color of that pixel is blended with the background color.

PNG improves on GIF in its ability to progressively display an image; that is, to display better and better approximations of the image as it arrives over a network connection. PNG files can contain gamma correction and color correction information so that the images can be accurately rendered on a variety of display devices.

Tag Image File Format (TIFF)

TIFF is a flexible and extendable format that is supported by a wide variety of platforms and image-processing applications. TIFF files can store images with an arbitrary number of bits per pixel and can employ a variety of compression algorithms. Several images can be stored in a single, multiple-page TIFF file. Information related to the image (scanner make, host computer, type of compression, orientation, samples per pixel, and so on) can be stored in the file and arranged through the use of tags. The TIFF format can be extended as needed by the approval and addition of new tags.


Send comments on this topic.

© 2001 Microsoft Corporation. All rights reserved.

  • 打赏
  • 举报



  • 基础类社区
  • Web++
  • encoderlee
2002-08-30 10:21