1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-05 12:20:22 +00:00
qb64/internal/help/_LOADIMAGE.txt

107 lines
4.6 KiB
Plaintext
Raw Normal View History

2016-03-18 11:36:04 +00:00
{{DISPLAYTITLE:_LOADIMAGE}}
2017-10-10 14:55:21 +00:00
The [[_LOADIMAGE]] function loads an image into memory and returns valid [[LONG]] image handle values that are less than -1.
{{PageSyntax}}
2017-10-10 14:55:21 +00:00
: {{Parameter|handle&}} = [[_LOADIMAGE]]({{Parameter|filename$}}[, {{Parameter|mode%}}])
2016-03-18 11:36:04 +00:00
{{Parameters}}
2017-10-10 14:55:21 +00:00
* {{Parameter|filename$}} is literal or variable [[STRING]] file name value.
2019-04-15 01:15:33 +00:00
* Optional {{Parameter|mode%}} [[INTEGER]] values can be:
** 256 = 8-bit (256-color, ''QB64 versions prior to 1.000'')
2017-10-10 14:55:21 +00:00
** 32 = 32-bit
** 33 = hardware image
{{PageDescription}}
2019-04-15 01:15:33 +00:00
* Various common image file formats supported, like BMP, JPG, PNG, etc. A path can also be given.
* The {{Parameter|mode%}} can designate 256 (8-bit - versions prior to 1.000), 32-bit color or 33 ('''version 1.000 and up'''). Omit to use the current graphic screen settings.
2017-10-10 14:55:21 +00:00
* 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 (function)|_WIDTH]] - 1 and [[_HEIGHT]] - 1.
* Images can be made into a program [[SCREEN (statement)|SCREEN]] or page adopting the size and palette settings or placed using [[_PUTIMAGE]].
2017-10-10 14:55:21 +00:00
* Returns -1 as an invalid handle if it can't load the image. Valid [[LONG]] handle returns are less than -1 ({{Parameter|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]].'''
2016-03-18 11:36:04 +00:00
{{PageErrors}}
2017-10-10 14:55:21 +00:00
* Some picture file images may not load when a {{Parameter|mode%}} value is designated. Try loading it without a {{Parameter|mode%}} designation.
* '''It is important to free unused or discarded images with [[_FREEIMAGE]] to prevent CPU memory overflow errors.'''
* '''In text-only [[SCREEN]] 0, {{Parameter|mode%}} 32 must be specified.''' When loading an [[_ICON]] image use 32 for the {{Parameter|mode%}} too.
2017-10-10 14:55:21 +00:00
{{PageExamples}}
''Example 1:'' Already in SCREEN 13 and want computer to match the 32-bit jpg/etc.
colors to the current palette:
{{CodeStart}} '' ''
{{Cl|SCREEN (statement)|SCREEN}} 13
2019-04-15 01:15:33 +00:00
i& = {{Cl|_LOADIMAGE}}("mypic.jpg")
{{Cl|_PUTIMAGE}}, i& '' ''
{{CodeEnd}}
''Example 2:'' Already in SCREEN 13 but want to load an 8-bit image and adopt its
palette as the current palette:
{{CodeStart}} '' ''
{{Cl|SCREEN (statement)|SCREEN}} 13
2019-04-15 01:15:33 +00:00
i& = {{Cl|_LOADIMAGE}}("mypic256col.bmp", 256)
{{Cl|_COPYPALETTE}} i&, 0
{{Cl|_PUTIMAGE}}, i& '' ''
{{CodeEnd}}
''Example 3:'' Want to display an image in 32-bit color using its resolution as a program screen:
{{CodeStart}} '' ''
2019-04-15 01:15:33 +00:00
i& = {{Cl|_LOADIMAGE}}("mypic.jpg", 32)
{{Cl|SCREEN (statement)|SCREEN}} i& '' ''
{{CodeEnd}}
''Example 4:'' [[DRAW]]ing and rotating an image 360 degrees using Turn Angle. [[POINT]] is used to read the invisible image source.
{{CodeStart}}
{{Cl|SCREEN (statement)|SCREEN}} {{Cl|_NEWIMAGE}}(800, 600, 32)
2019-04-15 01:15:33 +00:00
img& = {{Cl|_LOADIMAGE}}("QB64.PNG") 'load the image file to be drawn
wide% = {{Cl|_WIDTH (function)|_WIDTH}}(img&): deep% = {{Cl|_HEIGHT}}(img&)
2019-04-15 01:15:33 +00:00
TLC$ = "BL" + {{Cl|STR$}}(wide% \ 2) + "BU" + {{Cl|STR$}}(deep% \ 2) 'start draw at top left corner
RET$ = "BD BL" + {{Cl|STR$}}(wide%) 'return to left side of image
{{Cl|_SOURCE}} img&
{{Cl|_DEST}} 0
DO
{{Cl|FOR...NEXT|FOR}} angle% = 0 {{Cl|TO}} 360 {{Cl|STEP}} 15
{{Cl|CLS}}
2019-04-15 01:15:33 +00:00
{{Cl|DRAW}} "BM400, 300" + "TA=" + {{Cl|VARPTR$}}(angle%) + TLC$
{{Cl|FOR...NEXT|FOR}} y = 0 {{Cl|TO}} deep% - 1
{{Cl|FOR...NEXT|FOR}} x = 0 {{Cl|TO}} wide% - 1
2019-04-15 01:15:33 +00:00
{{Cl|DRAW}} "C" + {{Cl|STR$}}({{Cl|POINT}}(x, y)) + "R1" 'color and DRAW each pixel
{{Cl|NEXT}}
{{Cl|DRAW}} RET$
{{Cl|NEXT}}
{{Cl|_DISPLAY}} 'NOTE: CPU usage will be HIGH!
{{Cl|NEXT}}
2019-04-15 01:15:33 +00:00
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} > "" '' ''
{{CodeEnd}}
{{small|Code by Ted Weissgerber}}
:''NOTE:'' The ''QB64.PNG'' file picturing the QB64 bee can saved from the top of the [http://www.qb64.net/forum/index.php QB64 forum]. Speed varies with image size.
2017-10-10 14:55:21 +00:00
===More examples===
2016-03-18 11:36:04 +00:00
* [[SAVEIMAGE]] (QB64 Image to Bitmap SUB by Galleon)
2017-10-10 14:55:21 +00:00
* [[Program ScreenShots]] (Member-contributed program for legacy screen modes)
2016-03-18 11:36:04 +00:00
* [[ThirtyTwoBit SUB]] (QB64 Image area to bitmap)
{{PageSeeAlso}}
2017-10-10 14:55:21 +00:00
* [[_FREEIMAGE]], [[_ICON]]
2016-03-18 11:36:04 +00:00
* [[_PUTIMAGE]], [[_MAPTRIANGLE]]
* [[_NEWIMAGE]], [[_COPYIMAGE]]
* [[_PRINTIMAGE]] (printer)
* [[_PALETTECOLOR (function)]], [[_COPYPALETTE]], [[_ICON]]
* [[SCREEN (statement)]]
* [[Hardware images]]
* [[Bitmaps]], [[Icons and Cursors]], [[GIF Images]]
2019-04-15 01:15:33 +00:00
{{PageNavigation}}