Loading image files routines are implemented in <lua_load.c>. Header file is: <lua_load.h>.

This chapter has been introduced in LuAllegro version 0.33

 

Loading image files

Warning: when using truecolor images, you should always set the graphics mode before loading any bitmap data! Otherwise the pixel format (RGB or BGR) will not be known, so the file may be converted wrongly.


bitmap,palette = allegro.load_bitmap(string filename,bool save_palette)

Loads a bitmap from a file.At present this function supports BMP, LBM, PCX, and TGA files, determining the type from the file extension.

If the file contains a truecolor image, you must set the video mode or call allegro.set_color_conversion() before loading it. In this case, if the destination color depth is 8-bit, the palette will be generated by calling allegro.generate_optimized_palette() on the bitmap; otherwise, the returned palette will be generated by calling allegro.generate_332_palette().

If the "save_palette" parameter is nil or false then palette data are simply not returned. Additionally, if the file is a truecolor image and the destination color depth is 8-bit, the color conversion process will use the current palette instead of generating an optimized one.

Example:

      bmp,palette = allegro.load_bitmap("image.pcx",true)
      if (!bmp) then
         abort_on_error("Couldn't load image.pcx!")
      end
      

Return value: Returns a bitmap userdata or nil on error. Additionally it returns palette data if "save_palette" parameter is true.

 

See also: load_bmp, load_lbm, load_pcx, load_tga, destroy_bitmap, save_bitmap, register_bitmap_file_type, set_color_depth, set_color_conversion, generate_optimized_palette, generate_332_palette.
bitmap,palette = allegro.load_bmp(string filename,bool save_palette)

Loads an 8-bit, 16-bit, 24-bit or 32-bit Windows or OS/2 BMP file.

Return value: Returns a bitmap userdata. Additionally it returns palette data if "save_palette" parameter is true.On failure returns nil.

 

See also: load_bitmap
bitmap,palette = allegro.load_lbm(string filename,bool save_palette)

Loads a 256-color IFF ILBM/PBM file.

Return value: Returns a bitmap userdata. Additionally it returns palette data if "save_palette" parameter is true.On failure returns nil.

 

See also: load_bitmap.

bitmap,palette = allegro.load_pcx(string filename,bool save_palette)

Loads a 256-color or 24-bit truecolor PCX file.

Return value: Returns a bitmap userdata. Additionally it returns palette data if "save_palette" parameter is true.On failure returns nil.

See also: load_bitmap.
bitmap,palette = allegro.load_tga(string filename,bool save_palette)

Loads a 256-color, 15-bit hicolor, 24-bit truecolor, or 32-bit truecolor+alpha TGA file.

Return value: Returns a bitmap userdata. Additionally it returns palette data if "save_palette" parameter is true.On failure returns nil.

See also: load_bitmap.
boolean allegro.save_bitmap(filename,bitmap,palette)

Writes a bitmap into a file, using the specified palette, which should be an array of 256 RGB structures. The output format is determined from the filename extension: at present this function supports BMP, PCX and TGA formats.

Two things to watch out for: on some video cards it may be faster to copy the screen to a memory bitmap and save the latter, and if you use this to dump the screen into a file you may end up with an image much larger than you were expecting, because Allegro often creates virtual screens larger than the visible screen. You can get around this by using a sub-bitmap to specify which part of the screen to save, eg:

      ...
      pal=allegro.get_palette(pal);
      bmp = allegro.create_sub_bitmap(screen, 0, 0, SCREEN_W, SCREEN_H);
      allegro.save_bitmap("dump.pcx", bmp, pal);
      

Return value: Returns false on error.

See also: save_bmp, save_pcx, save_tga, load_bitmap, register_bitmap_file_type.
boolean allegro.save_bmp(filename,bitmap,palette)

Writes a bitmap into a 256-color or 24-bit truecolor BMP file.

Return value: Returns false on error.

See also: save_bitmap.
boolean allegro.save_pcx(filename,bitmap,palette)

Writes a bitmap into a 256-color or 24-bit truecolor PCX file.

Return value: Returns false on error.

See also: save_bitmap.
boolean allegro.save_tga(filename,bitmap,palette)

Writes a bitmap into a 256-color, 15-bit hicolor, 24-bit truecolor, or 32-bit truecolor+alpha TGA file.

Return value: Returns false on error.

See also: save_bitmap.
allegro.set_color_conversion(mode)

Specifies how to convert images between the various color depths when reading graphics from external bitmap files or datafiles. The mode is a bitmask specifying which types of conversion are allowed. If the appropriate bit is set, data will be converted into the current pixel format (selected by calling the set_color_depth() function), otherwise it will be left in the same format as the disk file, leaving you to convert it manually before the graphic can be displayed. The default mode is total conversion, so that all images will be loaded in the appropriate format for the current video mode. Bit flags have been implemented as allegro variables. Valid bit flags are:
      COLORCONV_NONE                // disable all format
                                    // conversions
      COLORCONV_8_TO_15             // expand 8-bit to 15-bit
      COLORCONV_8_TO_16             // expand 8-bit to 16-bit
      COLORCONV_8_TO_24             // expand 8-bit to 24-bit
      COLORCONV_8_TO_32             // expand 8-bit to 32-bit
      COLORCONV_15_TO_8             // reduce 15-bit to 8-bit
      COLORCONV_15_TO_16            // expand 15-bit to 16-bit
      COLORCONV_15_TO_24            // expand 15-bit to 24-bit
      COLORCONV_15_TO_32            // expand 15-bit to 32-bit
      COLORCONV_16_TO_8             // reduce 16-bit to 8-bit
      COLORCONV_16_TO_15            // reduce 16-bit to 15-bit
      COLORCONV_16_TO_24            // expand 16-bit to 24-bit
      COLORCONV_16_TO_32            // expand 16-bit to 32-bit
      COLORCONV_24_TO_8             // reduce 24-bit to 8-bit
      COLORCONV_24_TO_15            // reduce 24-bit to 15-bit
      COLORCONV_24_TO_16            // reduce 24-bit to 16-bit
      COLORCONV_24_TO_32            // expand 24-bit to 32-bit
      COLORCONV_32_TO_8             // reduce 32-bit RGB to 8-bit
      COLORCONV_32_TO_15            // reduce 32-bit RGB to 15-bit
      COLORCONV_32_TO_16            // reduce 32-bit RGB to 16-bit
      COLORCONV_32_TO_24            // reduce 32-bit RGB to 24-bit
      COLORCONV_32A_TO_8            // reduce 32-bit RGBA to 8-bit
      COLORCONV_32A_TO_15           // reduce 32-bit RGBA to 15-bit
      COLORCONV_32A_TO_16           // reduce 32-bit RGBA to 16-bit
      COLORCONV_32A_TO_24           // reduce 32-bit RGBA to 24-bit
      COLORCONV_DITHER_PAL          // dither when reducing to 8-bit
      COLORCONV_DITHER_HI           // dither when reducing to
                                    // hicolor
      COLORCONV_KEEP_TRANS          // keep original transparency
For convenience, the following variables can be used to select common combinations of these flags:
      COLORCONV_EXPAND_256          // expand 256-color to hi/truecolor
      COLORCONV_REDUCE_TO_256       // reduce hi/truecolor to 256-color
      COLORCONV_EXPAND_15_TO_16     // expand 15-bit hicolor to 16-bit
      COLORCONV_REDUCE_16_TO_15     // reduce 16-bit hicolor to 15-bit
      COLORCONV_EXPAND_HI_TO_TRUE   // expand 15/16-bit to 24/32-bit
      COLORCONV_REDUCE_TRUE_TO_HI   // reduce 24/32-bit to 15/16-bit
      COLORCONV_24_EQUALS_32        // convert between 24- and 32-bit
      COLORCONV_TOTAL               // everything to current format
      COLORCONV_PARTIAL             // convert 15 <-> 16-bit and
                                    // 24 <-> 32-bit
      COLORCONV_MOST                // all but hi/truecolor <-> 256
      COLORCONV_DITHER              // dither during all color reductions
      COLORCONV_KEEP_ALPHA          // convert everything to current format
                                    // unless it would lose alpha information
If you enable the COLORCONV_DITHER flag, dithering will be performed whenever truecolor graphics are converted into a hicolor or paletted format, including by the blit() function, and any automatic conversions that take place while reading graphics from disk. This can produce much better looking results, but is obviously slower than a direct conversion.

If you intend using converted bitmaps with functions like masked_blit() or draw_sprite(), you should specify the COLORCONV_KEEP_TRANS flag. It will ensure that the masked areas in the bitmap before and after the conversion stay exactly the same, by mapping transparent colors to each other and adjusting colors which would be converted to the transparent color otherwise. It affects every blit() operation between distinct pixel formats and every automatic conversion.

See also: set_color_depth, load_bitmap, load_datafile, fixup_datafile, makecol15_dither, get_color_conversion.
int allegro.get_color_conversion()

Returns the current color conversion mode.
See also: set_color_conversion.

Back to main page