_LOADIMAGE

From QB64 Phoenix Edition Wiki
Revision as of 12:00, 19 April 2022 by SMcNeill (talk | contribs) (Created page with "{{DISPLAYTITLE:_LOADIMAGE}} The _LOADIMAGE function loads an image into memory and returns valid LONG image handle values that are less than -1. {{PageSyntax}} :{{Parameter|handle&}} = _LOADIMAGE({{Parameter|filename$}}[, {{Parameter|mode%}}]) {{Parameters}} *{{Parameter|filename$}} is literal or variable STRING file name value. *Optional {{Parameter|mode%}} INTEGER values can be: **32 = 32-bit **33 = hardware image {{PageDescription}} *Var...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


The _LOADIMAGE function loads an image into memory and returns valid LONG image handle values that are less than -1.


Syntax

handle& = _LOADIMAGE(filename$[, mode%])


Template:Parameters

  • filename$ is literal or variable STRING file name value.
  • Optional mode% INTEGER values can be:
    • 32 = 32-bit
    • 33 = hardware image


Description

  • Various common image file formats supported, like BMP, JPG, PNG, etc. A path can also be given.
  • The mode% can designate 32-bit color or 33 (version 1.000 and up). Omit to use the current graphic screen settings.
  • Mode 33 images are hardware accelerated and are created using _LOADIMAGE or _COPYIMAGE (version 1.000 and up).
  • Loaded images can be read invisibly using POINT. Image coordinates start at 0 up to the _WIDTH - 1 and _HEIGHT - 1.
  • Images can be made into a program SCREEN or page adopting the size and palette settings or placed using _PUTIMAGE.
  • Returns -1 as an invalid handle if it can't load the image. Valid LONG handle returns are less than -1 (handle& < -1).
  • Valid images only need to be loaded once. The handle can be used repeatedly until freed.
  • Images are not deallocated when the SUB or FUNCTION they are created in ends. Free them with _FREEIMAGE.


Template:PageErrors

  • Some picture file images may not load when a mode% value is designated. Try loading it without a mode% designation.
  • It is important to free unused or discarded images with _FREEIMAGE to prevent CPU memory overflow errors.
  • In text-only SCREEN 0, mode% 32 must be specified. When loading an _ICON image use 32 for the mode% too.


Examples

Example 1: To display an image in 32-bit color using its resolution as a program screen:

  
i& = _LOADIMAGE("mypic.jpg", 32)
SCREEN i&  


Example 2: DRAWing and rotating an image 360 degrees using Turn Angle. POINT is used to read the invisible image source.

SCREEN _NEWIMAGE(800, 600, 32)
img& = _LOADIMAGE("QB64.PNG")                           'load the image file to be drawn

wide% = _WIDTH(img&): deep% = _HEIGHT(img&)
TLC$ = "BL" + STR$(wide% \ 2) + "BU" + STR$(deep% \ 2)  'start draw at top left corner
RET$ = "BD BL" + STR$(wide%)                            'return to left side of image
_SOURCE img&
_DEST 0
DO
  FOR angle% = 0 TO 360 STEP 15
    CLS
    DRAW "BM400, 300" + "TA=" + VARPTR$(angle%) + TLC$
    FOR y = 0 TO deep% - 1
      FOR x = 0 TO wide% - 1
        DRAW "C" + STR$(POINT(x, y)) + "R1"            'color and DRAW each pixel
      NEXT
      DRAW RET$
    NEXT
    _DISPLAY                         'NOTE: CPU usage will be HIGH!
  NEXT
LOOP UNTIL INKEY$ > ""  
Code by Ted Weissgerber
NOTE: The QB64.PNG file picturing the QB64 bee can saved from the top of the QB64 forum. Speed varies with image size.


More examples


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link