Leptonica  1.82.0
Image processing and image analysis suite
bmpio.c File Reference
#include <string.h>
#include "allheaders.h"
#include "bmp.h"

Go to the source code of this file.

Macros

#define DEBUG   0
 

Functions

PIXpixReadStreamBmp (FILE *fp)
 
PIXpixReadMemBmp (const l_uint8 *cdata, size_t size)
 
l_ok pixWriteStreamBmp (FILE *fp, PIX *pix)
 
l_ok pixWriteMemBmp (l_uint8 **pfdata, size_t *pfsize, PIX *pixs)
 

Variables

RGBA_QUAD bwmap [2] = { {255,255,255,255}, {0,0,0,255} }
 
static const l_int32 L_MAX_ALLOWED_WIDTH = 1000000
 
static const l_int32 L_MAX_ALLOWED_HEIGHT = 1000000
 
static const l_int64 L_MAX_ALLOWED_PIXELS = 400000000LL
 
static const l_int32 L_MAX_ALLOWED_RES = 10000000
 

Detailed Description


     Read bmp
          PIX          *pixReadStreamBmp()
          PIX          *pixReadMemBmp()

     Write bmp
          l_int32       pixWriteStreamBmp()
          l_int32       pixWriteMemBmp()

Definition in file bmpio.c.

Function Documentation

◆ pixReadMemBmp()

PIX* pixReadMemBmp ( const l_uint8 *  cdata,
size_t  size 
)

pixReadMemBmp()

Parameters
[in]cdatabmp data
[in]sizenumber of bytes of bmp-formatted data
Returns
pix, or NULL on error
Notes:
     (1) The BMP file is organized as follows:
         * 14 byte fileheader
         * Variable size infoheader: 40, 108 or 124 bytes.
           We only use data in he first 40 bytes.
         * Optional colormap, with size 4 * ncolors (in bytes)
         * Image data
     (2) 2 bpp bmp files are not valid in the original spec, but they
         are valid in later versions.

Definition at line 129 of file bmpio.c.

References BMP_FileHeader::bfType, BMP_FHBYTES, and BMP_ID.

Referenced by pixReadStreamBmp().

◆ pixReadStreamBmp()

PIX* pixReadStreamBmp ( FILE *  fp)

pixReadStreamBmp()

Parameters
[in]fpfile stream opened for read
Returns
pix, or NULL on error
Notes:
     (1) Here are references on the bmp file format:
         http://en.wikipedia.org/wiki/BMP_file_format
         http://www.fortunecity.com/skyscraper/windows/364/bmpffrmt.html

Definition at line 87 of file bmpio.c.

References l_binaryReadStream(), and pixReadMemBmp().

◆ pixWriteMemBmp()

l_ok pixWriteMemBmp ( l_uint8 **  pfdata,
size_t *  pfsize,
PIX pixs 
)

pixWriteMemBmp()

Parameters
[out]pfdatadata of bmp formatted image
[out]pfsizesize of returned data
[in]pixs1, 2, 4, 8, 16, 32 bpp
Returns
0 if OK, 1 on error
Notes:
     (1) 2 bpp bmp files are not valid in the original spec, and are
         written as 8 bpp.
     (2) pix with depth <= 8 bpp are written with a colormap.
         16 bpp gray and 32 bpp rgb pix are written without a colormap.
     (3) The transparency component in an rgb pix is ignored.
         All 32 bpp pix have the bmp alpha component set to 255 (opaque).
     (4) The bmp colormap entries, RGBA_QUAD, are the same as
         the ones used for colormaps in leptonica.  This allows
         a simple memcpy for bmp output.

Definition at line 445 of file bmpio.c.

Referenced by pixWriteStreamBmp().

◆ pixWriteStreamBmp()

l_ok pixWriteStreamBmp ( FILE *  fp,
PIX pix 
)

pixWriteStreamBmp()

Parameters
[in]fpfile stream
[in]pixall depths
Returns
0 if OK, 1 on error

Definition at line 400 of file bmpio.c.

References pixWriteMemBmp().