#ifdef QB64_BACKSLASH_FILESYSTEM #include "src\\nanojpeg.c" #else #include "src/nanojpeg.c" #endif uint8 *image_decode_jpg(uint8 *content,int32 bytes,int32 *result,int32 *x,int32 *y){ //Result:bit 1=Success,bit 2=32bit[BGRA] *result=0; static int32 init=0; if (!init){init=1; njInit();} if (njDecode(content,bytes)) return NULL; static uint8 *si; si=(uint8*)njGetImage(); static int32 w,h; w=njGetWidth(); h=njGetHeight(); static uint8 *di; if (njIsColor){//RGB //Create a buffer large enough to store image if (w*h*3!=njGetImageSize()) return NULL; di=(uint8*)malloc(w*h*4); //RGB->BGRA static int32 c; c=w*h; while(c--){ di[c*4+2]=si[c*3 ];//red di[c*4+1]=si[c*3+1];//green di[c*4 ]=si[c*3+2];//blue di[c*4+3]=255; //alpha } }else{//Greyscale //Create a buffer large enough to store image if (w*h!=njGetImageSize()) return NULL; di=(uint8*)malloc(w*h*4); //Greyscale->BGRA static int32 c; c=w*h; while(c--){ di[c*4+2]=si[c];//red di[c*4+1]=si[c];//green di[c*4 ]=si[c];//blue di[c*4+3]=255; //alpha } } *result=1+2; *x=w; *y=h; return di; }