QB64.org Forum

Active Forums => QB64 Discussion => Topic started by: TerryRitchie on April 28, 2020, 04:39:39 pm

Title: _LOADIMAGE supported image types
Post by: TerryRitchie on April 28, 2020, 04:39:39 pm
What's the official image types supported by _LOADIMAGE? In the Wiki this is stated:

"Various common image file formats supported, like BMP, JPG, PNG, etc. A path can also be given."

It's the "etc." that is throwing me. Are there more than just BMP, JPG, and PNG? I know in the SDL version the following were supported:

BMP, JPG, PNG, GIF, PNM, XPM, XCF, PCX, TIF, LBM, and TGA.

Does that still hold true for later versions?
Title: Re: _LOADIMAGE supported image types
Post by: SMcNeill on April 28, 2020, 05:42:19 pm
BMP, JPG, PNG, GIF are all I know which is supported, which is why I never expect to expand my Save Image library beyond those 4 formats.
Title: Re: _LOADIMAGE supported image types
Post by: 40wattstudio on April 28, 2020, 06:47:52 pm
JP2 doesn't work. I tried that one a while back.
Title: Re: _LOADIMAGE supported image types
Post by: Cobalt on April 29, 2020, 11:28:18 am
JPEG "Progressive" format does not work either.
however JPEG "Entropy Optimization" does.

both those affect the final file size and can make it a fair deal smaller, while maintaining a decent level of quality.


was kind of bummed that PCX doesn't work natively as almost all my old QB45 programs use that format for the sprite sheets and such.
Title: Re: _LOADIMAGE supported image types
Post by: FellippeHeitor on April 29, 2020, 11:49:33 am
Officially: BMP, JPG and PNG. Check internal/c/parts/video/image/decode

Now we do have a fallback library (check internal/c/parts/video/image/decode/other) which is tried when none of the file format routines succeeds. I just checked that there is a newer version of it available (https://github.com/nothings/stb) and we may get this new version in the upcoming update to QB64 (v1.4.5?).
Title: Re: _LOADIMAGE supported image types
Post by: FellippeHeitor on April 29, 2020, 11:53:57 am
These are the formats currently supported by stb: JPEG, PNG, BMP, GIF, PSD, PIC, PNM, TGA.

Code: C++: [Select]
  1. static unsigned char *stbi_load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp)
  2. {
  3.    #ifndef STBI_NO_JPEG
  4.    if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp);
  5.    #endif
  6.    #ifndef STBI_NO_PNG
  7.    if (stbi__png_test(s))  return stbi__png_load(s,x,y,comp,req_comp);
  8.    #endif
  9.    #ifndef STBI_NO_BMP
  10.    if (stbi__bmp_test(s))  return stbi__bmp_load(s,x,y,comp,req_comp);
  11.    #endif
  12.    #ifndef STBI_NO_GIF
  13.    if (stbi__gif_test(s))  return stbi__gif_load(s,x,y,comp,req_comp);
  14.    #endif
  15.    #ifndef STBI_NO_PSD
  16.    if (stbi__psd_test(s))  return stbi__psd_load(s,x,y,comp,req_comp);
  17.    #endif
  18.    #ifndef STBI_NO_PIC
  19.    if (stbi__pic_test(s))  return stbi__pic_load(s,x,y,comp,req_comp);
  20.    #endif
  21.    #ifndef STBI_NO_PNM
  22.    if (stbi__pnm_test(s))  return stbi__pnm_load(s,x,y,comp,req_comp);
  23.    #endif
  24.  
  25.    #ifndef STBI_NO_HDR
  26.    if (stbi__hdr_test(s)) {
  27.       float *hdr = stbi__hdr_load(s, x,y,comp,req_comp);
  28.       return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp);
  29.    }
  30.    #endif
  31.  
  32.    #ifndef STBI_NO_TGA
  33.    // test tga last because it's a crappy test!
  34.    if (stbi__tga_test(s))
  35.       return stbi__tga_load(s,x,y,comp,req_comp);
  36.    #endif
  37.  
  38.    return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt");
  39. }
Title: Re: _LOADIMAGE supported image types
Post by: TerryRitchie on April 29, 2020, 11:58:58 am
Thanks Fell, I'll include that in the tutorial.