Print captured JPG image from filled uint8_t PROGMEM saved in the Flash of esp32

Hi John, I'm working on a project for a while now.
I'm capturing images with Esp32CAM and transferring them via ESP-NOW to another Esp32 Wroom.
When the JPG array arrives in the second ESP32 Wroom as char array[], I'm converting it again to Uint8_t array[] PROGMEM. This same new Uint8_t array[] PROGMEM I'm using so that the Bodmer <JPEGDecoder.h> library can read it and finally print it on the TFT.
Everything is fine until I try to read and print the newly built PROGMEM array . I use the library function "drawArrayJpeg(byteval, sizeof(xxxx), 0, 0);"

If the library reads an unsigned char PROGMEM or a static uint8_t PROGMEM pasted from an online converter, the image is printed, but if I use the same PROGMEM as a uint8_t array obtained from my Char array[], received by ESP-NOW, which brings the same HEX bytes, the image is not printed.
I always put the "0x" and the "," , because the "drawArrayJpeg" function does not work without them.
I am publishing here only the program for the second ESP32, since there I have the problem of printing the image from a PROGMEM[] saved in Flash.
You can see in the program that I try to convert the Char array[] into another uint8_t PROGMEM array and then integrate this uint8_t PROGMEM [] into the "drawArrayJpeg" function. The result is a black screen.
Checking how the char progmem[] was converted to uint8_t progmem[], it seems that there is no data loss due to the char to uint8 conversion process, the uint PROGMEM brings the same data as the Char PROGMEM and still nothing is printed.
Thank you very much in advance for your time!

Bellow I past my code, because as a new member I can,t attach the file:


#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>
TFT_eSPI tft = TFT_eSPI(); 

#include <JPEGDecoder.h>
//Return the minimum of two values a and b
#define minimum(a,b)     (((a) < (b)) ? (a) : (b))


   uint8_t GAUGE[] PROGMEM = {
0xFF,0xD8,0xFF,0xE0,
0x0,0x10,0x4A,0x46,0x49,0x46,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,
0xFF,0xDB,0x0,0x43,0x0,0x3F,0x2B,0x2F,0x37,0x2F,0x27,0x3F,0x37,0x33,0x37,0x47,0x43,0x3F,
0x4B,0x5F,0x9E,0x66,0x5F,0x57,0x57,0x5F,0xC1,0x8A,0x92,0x72,0x9E,0xE4,0xC9,0xF0,0xEC,
0xE0,0xC9,0xDD,0xD9,0xFC,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xD9,0xDD,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF4,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xDB,0x0,0x43,0x1,0x43,0x47,0x47,0x5F,0x53,0x5F,0xB9,0x66,0x66,0xB9,0xFF,0xFF,0xDD,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xC4,0x0,0x1F,0x0,0x0,0x1,0x5,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xFF,0xC4,0x0,0xB5,0x10,0x0,0x2,0x1,
0x3,0x3,0x2,0x4,0x3,0x5,0x5,0x4,0x4,0x0,0x0,0x1,0x7D,0x1,0x2,0x3,0x0,0x4,0x11,0x5,
0x12,0x21,0x31,0x41,0x6,0x13,0x51,0x61,0x7,0x22,0x71,0x14,0x32,0x81,0x91,0xA1,0x8,0x23,
0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,0x33,0x62,0x72,0x82,0x9,0xA,0x16,0x17,0x18,
0x19,0x1A,0x25,0x26,0x27,0x28,0x29,0x2A,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,
0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,0x64,0x65,
0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x83,0x84,0x85,0x86,
0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,
0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,
0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE1,0xE2,
0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,
0xFA,0xFF,0xC4,0x0,0x1F,0x1,0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,
0x0,0x0,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xFF,0xC4,0x0,0xB5,0x11,0x0,
0x2,0x1,0x2,0x4,0x4,0x3,0x4,0x7,0x5,0x4,0x4,0x0,0x1,0x2,0x77,0x0,0x1,0x2,0x3,0x11,0x4,
0x5,0x21,0x31,0x6,0x12,0x41,0x51,0x7,0x61,0x71,0x13,0x22,0x32,0x81,0x8,0x14,0x42,0x91,
0xA1,0xB1,0xC1,0x9,0x23,0x33,0x52,0xF0,0x15,0x62,0x72,0xD1,0xA,0x16,0x24,0x34,0xE1,
0x25,0xF1,0x17,0x18,0x19,0x1A,0x26,0x27,0x28,0x29,0x2A,0x35,0x36,0x37,0x38,0x39,0x3A,
0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,
0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x82,0x83,
0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,
0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,
0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,
0xDA,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,
0xF9,0xFA,0xFF,0xC0,0x0,0x11,0x8,0x0,0xF0,0x1,0x40,0x3,0x1,0x21,0x0,0x2,0x11,0x1,0x3,
0x11,0x1,0xFF,0xDA,0x0,0xC,0x3,0x1,0x0,0x2,0x11,0x3,0x11,0x0,0x3F,0x0,0xBF,0x45,0x59,
0xCE,0x32,0x73,0x88,0xE9,0x83,0xEE,0x8A,0x45,0x12,0xB7,0x6A,0x64,0x7F,0x79,0x8D,0x0,
0x49,0x45,0x2,0x1B,0x48,0x28,0x18,0x1A,0x28,0x18,0xD3,0x45,0x0,0x35,0xA3,0xD,0xD6,0xAB,
0xBC,0x45,0x69,0xC,0x8E,0xA4,0x8E,0x62,0x9D,0x79,0x14,0xC,0x9D,0x58,0x30,0xCA,0x9A,
0x75,0x2,0xA,0x4A,0x0,0x29,0x28,0x0,0xA6,0xD0,0x4,0x33,0x1E,0x6A,0xA,0xA,0x15,0x8E,
0x16,0x93,0x1C,0x64,0xD3,0x1,0x33,0x4C,0xA4,0x50,0xA7,0xA5,0x25,0x20,0x16,0x83,0x40,
0xD,0xA2,0x80,0x12,0x8A,0x0,0xDC,0x5A,0x75,0x59,0x81,0x4,0xDC,0xC8,0xAB,0x4F,0x5E,0xB4,
0x86,0x2B,0x1C,0x64,0xFA,0x52,0x44,0x31,0x18,0xA0,0x9,0x29,0x28,0x10,0xDA,0x4A,0x6,0x14,
0x94,0xC,0x29,0x29,0x0,0x51,0x40,0xC8,0xDE,0x10,0xDD,0x38,0x35,0x5D,0x90,0xA9,0xE6,0x81,
0x8D,0x4,0xA9,0xC8,0xE0,0xD4,0xF1,0xCE,0x1B,0x87,0xE0,0xD0,0x4,0xD4,0x94,0x8,0x5A,
0x6D,0x0,0x25,0x25,0x3,0x20,0x9F,0xA8,0xA8,0x45,0x3,0x1C,0x6,0x5B,0xD8,0x53,0x5C,0xD3,
0x1,0xB4,0xE,0xB5,0x23,0x10,0xD0,0x28,0x18,0xB4,0xD3,0x40,0x9,0x45,0x0,0x14,0x94,0x1,
0xBB,0x45,0x51,0x81,0x2,0xFC,0xD2,0x93,0x52,0xAF,0x7A,0x6,0x31,0xFA,0x63,0xFB,0xC6,0xA5,
0xA0,0x2,0x92,0x80,0x19,0xBB,0xF2,0xA5,0xA0,0x60,0x69,0x29,0x0,0x94,0x50,0x31,0x68,0xA0,
0x2,0x9B,0x8C,0xAF,0xCD,0x40,0x10,0x3C,0x1F,0xDD,0xE6,0xA1,0xC5,0x3,0x1F,0x1C,0xAC,0x9E,
0xE3,0xD2,0xAC,0x23,0xAB,0xF4,0xFC,0xA8,0x1,0x69,0x28,0x10,0x86,0x92,0x81,0x95,0xAE,0x3E,
0xFD,0x34,0x52,0x18,0xBF,0x75,0x71,0xDE,0xA2,0xAA,0x0,0xA2,0xA4,0xA1,0xD,0x2,0x80,0x16,
0x9A,0x68,0x1,0x28,0xA0,0x4,0xA2,0x80,0x37,0x39,0xA4,0x63,0xB5,0x49,0xAA,0x30,0x22,0x88,
0x60,0x66,0xA6,0x1F,0x76,0x81,0x91,0x8E,0x67,0xFA,0xA,0x9A,0x80,0x12,0x9A,0x68,0x1,0x9B,
0x69,0x40,0xC5,0x22,0x82,0x96,0x98,0x86,0xD2,0xD2,0x18,0x51,0x40,0x5,0x14,0x0,0x94,0xD6,
0x45,0x7E,0xBF,0x9D,0x0,0x57,0x78,0x4A,0xD4,0x5D,0xF,0xBD,0x5,0x13,0x25,0xC7,0x69,0x3F,
0x3A,0x9B,0xB6,0x68,0x24,0x4A,0x4A,0x6,0x53,0x7E,0x58,0x9A,0xE,0x36,0xD0,0x30,0x62,0xD,
0x47,0x40,0xC5,0x1D,0x28,0xA4,0x31,0x29,0x28,0x1,0xD4,0xD3,0x40,0x9,0x49,0x40,0x5,0x14,
0x1,0xBD,0x50,0xDC,0x1F,0x97,0x1E,0xB4,0x12,0x28,0xFB,0xB5,0x25,0x32,0x48,0xE2,0xE7,0x2D,
0xEB,0x52,0xD2,0x29,0x9,0x48,0x7A,0xD3,0x24,0x4A,0x4A,0x62,0xA,0x29,0xC,0x4A,0x28,0x0,0xEF,
0x41,0xA0,0x0,0x52,0xD0,0x2,0x52,0x50,0x1,0x51,0xBC,0xA,0xDD,0x38,0xA0,0xA,0xCE,0x85,
0x7A,0xD2,0x2B,0xB4,0x7F,0x77,0xF2,0xA0,0xA2,0x74,0x95,0x5F,0xD8,0xFA,0x50,0xE7,0x8,0x68,
0x11,0x50,0x53,0xFF,0x0,0x82,0x81,0x90,0xD2,0x52,0x28,0x7F,0x6A,0x4A,0x0,0x29,0x28,0x10,
0x52,0x50,0x31,0x28,0xA0,0x2,0x92,0x80,0x37,0xAA,0xBC,0xBF,0x34,0xC3,0xDA,0x82,0x59,0x2E,
0x33,0x44,0xA7,0x8,0x69,0x92,0x2A,0xD,0xA8,0x5,0x3A,0x91,0x62,0x51,0x4C,0x91,0xB4,0x94,0x8,
0x29,0x33,0x40,0xB,0x45,0x0,0x14,0x50,0x1,0x49,0x40,0x5,0x14,0x0,0x94,0x50,0x3,0x4F,0x3C,
0x1E,0x95,0x4,0x96,0xFF,0x0,0xDD,0x34,0x86,0x57,0x61,0x8A,0x53,0x2B,0x15,0xDA,0x79,0xA6,
0x31,0xA2,0xA4,0x14,0x80,0x8E,0x50,0x1,0xE2,0xA3,0xA0,0x63,0x85,0x14,0xC,0x4A,0x5A,0x4,
0x25,0x36,0x81,0x85,0x14,0x0,0x94,0x50,0x6,0xF5,0x57,0x41,0x92,0xED,0xEF,0x4C,0x86,0x4B,
0x1F,0xDD,0xCD,0x32,0x4E,0x59,0x56,0x80,0x26,0xA2,0x91,0x42,0x52,0x53,0x24,0x4A,0x28,0x10,
0x94,0x94,0x0,0xB4,0x50,0x2,0xD2,0x50,0x3,0x49,0x21,0xC7,0x1C,0x52,0x8A,0x6,0x2D,0x25,
0x2,0xA,0x43,0x40,0x9,0x49,0x40,0x11,0xBA,0x87,0xEB,0x55,0x1C,0x61,0xCE,0x3A,0x52,0x28,
0x65,0x4A,0x28,0x19,0x1B,0x9C,0xB5,0x34,0x8A,0x6,0x25,0x2D,0x0,0x2D,0x14,0x8,0x4A,0x6D,
0x3,0xA,0x4A,0x0,0x28,0xA0,0xD,0xB9,0x4E,0x23,0x35,0x14,0x5C,0x2D,0x32,0x19,0x37,0x41,
0x4C,0x5F,0x9A,0x62,0x7D,0x28,0xE,0xA4,0xB4,0x52,0x29,0x89,0x4D,0x34,0xC8,0xA,0x28,0x0,
0xA4,0xC5,0x0,0x14,0xB4,0x0,0xB4,0x50,0x31,0xD,0x25,0x2,0xA,0x28,0x1,0xB4,0x50,0x1,0x4D,
0xA0,0x6,0x31,0xC5,0x53,0x7F,0xBD,0x48,0xA0,0x2,0x9D,0xD1,0x68,0x2,0x2A,0x75,0x3,0x23,
0xA2,0x81,0x8B,0x4B,0x40,0x9,0x49,0x40,0x9,0x49,0x40,0x5,0x14,0x1,0xAF,0x70,0x78,0xB,0x4A,
0x9D,0x69,0x90,0x3D,0xCE,0x1,0xA6,0xC0,0x3E,0x4C,0xFA,0xD0,0x3E,0xA4,0xB4,0x52,0x18,
0xDA,0x29,0x90,0x14,0x9D,0xE8,0x0,0xA2,0x80,0x12,0x8A,0x0,0x5A,0x5A,0x6,0x36,0x8A,0x42,
0xA,0x29,0x80,0x94,0x86,0x80,0xA,0x6D,0x0,0x31,0xFE,0xE9,0xAA,0x54,0x8A,0x1E,0x29,0x24,
0x3D,0xA8,0x1,0x82,0x9D,0x40,0xC6,0x35,0x32,0x81,0x8B,0x4B,0x9A,0x0,0x4A,0x4A,0x0,0x29,
0x28,0x0,0xA2,0x80,0x35,0x25,0x39,0x9B,0xE9,0x52,0x42,0x39,0x26,0x99,0x3,0x65,0x3C,0x7D,
0x6A,0x70,0x30,0x31,0x48,0x68,0x5A,0x28,0x18,0x94,0x94,0xC8,0x16,0x92,0x81,0x89,0x45,0x2,
0xA,0x41,0x40,0xB,0x4B,0x40,0xC4,0xEF,0x4B,0x40,0x9,0x49,0x48,0x4,0xA4,0xA0,0x41,0x4D,
0x34,0xC,0x86,0xE0,0xE1,0x2A,0xB0,0xEB,0x40,0xC9,0x5,0x44,0xFC,0xB5,0x0,0x2,0x9D,0x40,
0xC,0x7A,0x65,0x5,0x9,0x45,0x0,0x14,0x50,0x2,0x51,0x40,0x5,0x14,0x1,0xA3,0xDE,0xAC,0xC7,
0xFE,0xAF,0x3E,0xB4,0xC8,0x23,0xEB,0x2A,0x8A,0xB1,0x48,0x68,0x28,0xA0,0x18,0xDA,0x33,0xCD,
0x32,0x42,0x8A,0x0,0x29,0x28,0x0,0xA2,0x81,0x85,0x2D,0x0,0x34,0x52,0xD2,0x1,0x29,0x28,
0x10,0xDC,0xD2,0x8E,0x68,0x18,0x53,0x68,0x2,0xBD,0xD7,0x5A,0x85,0x68,0x19,0x27,0x45,
0xAA,0xF4,0x1,0x20,0xA5,0xA0,0x64,0x46,0x9B,0x40,0xC4,0xA2,0x80,0xA,0x28,0x1,0x28,0xA0,
0x2,0x8A,0x0,0xD1,0xC5,0x59,0x63,0x8C,0x2D,0x4,0x8D,0x8B,0x97,0x63,0x53,0x50,0x34,0x14,
0x94,0x9,0x89,0x49,0x4C,0x91,0x68,0xA0,0x8,0xA5,0x66,0x5F,0xBA,0x2A,0x41,0xC8,0xA0,0x62,
0xD2,0x52,0x0,0xA2,0x80,0xA,0x5A,0x0,0x6D,0x6,0x80,0x1B,0x45,0x0,0x14,0x94,0x8,0xA5,
0x39,0xCB,0xD0,0xB4,0x14,0x12,0xFD,0xDC,0x54,0x43,0xAD,0x0,0x49,0x48,0x7A,0x50,0x32,
0x3A,0x6D,0x3,0xA,0x4A,0x0,0x28,0xA0,0x2,0x92,0x80,0xA,0x28,0x3,0x56,0x3E,0x64,0x14,
0x3B,0x7C,0xED,0x41,0x24,0xB0,0x8F,0x92,0xA4,0xA0,0x61,0x49,0x4C,0x42,0x51,0x41,0x21,
0x45,0x0,0x14,0x52,0x18,0x52,0x1C,0x53,0x0,0x2,0x83,0x48,0x2,0x96,0x80,0x12,0x92,0x80,
0x1B,0x45,0x0,0x14,0xD3,0xD2,0x80,0x28,0x9E,0x69,0xEB,0x40,0xC7,0xD2,0x6C,0x5F,0x4A,
0x0,0x4D,0x94,0xC6,0x56,0xA0,0x64,0x64,0x11,0xDA,0x9B,0x40,0xC5,0xA4,0x6A,0x0,0x6D,0x14,
0x0,0x52,0x50,0x1,0x45,0x0,0x6B,0xC7,0xC6,0xF6,0xF4,0xA8,0x7F,0x99,0xA6,0x41,0x71,0x78,
0x14,0xB4,0x86,0x25,0x14,0xC4,0x36,0x96,0x81,0x9,0x4B,0x40,0x9,0x46,0x68,0x0,0xA2,0x90,
0xC5,0xA4,0xA0,0x3,0x34,0xB4,0x0,0x94,0x50,0x3,0x68,0xA0,0x6,0xD4,0x73,0x9C,0x46,0x68,
0x2,0xA5,0x4A,0xB4,0xC,0x5A,0x28,0x0,0xA2,0x80,0x12,0x9A,0x68,0x1,0xBB,0x45,0x2D,0x0,
0x37,0x9,0xDD,0x69,0x3C,0xB4,0xEC,0xD4,0x0,0xD6,0x4D,0xA3,0x35,0x1D,0x5,0x5,0x14,0x1,
0xAA,0xDF,0x2D,0xBF,0xD6,0x99,0x1F,0x32,0xA,0x64,0x16,0xE9,0x28,0x0,0xA4,0x34,0xC4,0x25,
0x2D,0x20,0x12,0x8A,0x0,0x5A,0x4A,0x0,0x29,0x69,0xC,0x4A,0x4A,0x0,0x29,0x68,0x1,0x28,
0xA0,0x4,0xA2,0x80,0x12,0xAB,0xDC,0x9E,0xD4,0x1,0x2,0xD4,0xA2,0x81,0x85,0x14,0x0,0x51,
0x40,0x9,0x49,0x40,0x9,0x49,0x40,0x9,0x49,0x40,0xC,0x7A,0x8E,0x82,0x82,0x96,0x80,0x34,
0xEE,0xF,0xCC,0xAB,0xE9,0x4B,0x6C,0x3A,0x9A,0x64,0x13,0xD1,0x40,0x84,0xA4,0xA6,0x1,0x45,
0x20,0xA,0x28,0x0,0xA2,0x80,0xA,0x29,0xC,0x29,0x28,0x1,0x69,0x28,0x1,0x29,0x68,0x1,
0x3A,0xD2,0x74,0xE2,0x80,0xA,0xA9,0x39,0xF9,0xE8,0x1,0x89,0x52,0x50,0x30,0xA2,0x80,
0xA,0x28,0x1,0x29,0x28,0x1,0x29,0x28,0x1,0xB4,0x50,0x4,0x2C,0x77,0x1A,0x4A,0xA,0x12,
0x96,0x80,0x34,0x24,0x39,0x76,0xAB,0x10,0xC,0x47,0x4C,0xCC,0x92,0x92,0x98,0x84,0xA2,
0x90,0xC2,0x8A,0x0,0x4A,0x5A,0x0,0x4A,0x5A,0x0,0x28,0x14,0x86,0x14,0x94,0x0,0x51,0x40,
0x9,0x4B,0x40,0x9,0x49,0x40,0x9,0x54,0x5D,0xB2,0x49,0xA0,0x63,0x92,0x9F,0x40,0xB,0x49,
0x40,0x5,0x14,0x0,0xDA,0x4A,0x0,0x4A,0x4A,0x0,0x2A,0x37,0x6E,0xD4,0xC,0x65,0x25,0x3,0x12,
0x96,0x80,0x2F,0x55,0xC1,0xD2,0xA8,0xCC,0x5A,0x4A,0x4,0x25,0x14,0x86,0x2D,0x25,0x0,0x14,
0x50,0x1,0x45,0x21,0x85,0x14,0x0,0x51,0x40,0x5,0x25,0x0,0x14,0x50,0x0,0x69,0xB4,0x0,0xC9,
0xE,0x10,0xD5,0x3A,0x6,0x4A,0x29,0x68,0x1,0x69,0x28,0x0,0xA4,0xA0,0x4,0xA4,0xA0,0x4,0xA4,
0xA0,0x6,0xB3,0x6D,0xA8,0x68,0x28,0x75,0x25,0x0,0x25,0x25,0x0,0x69,0x27,0x32,0x55,0x81,
0x4C,0xCC,0x5A,0x4A,0x62,0xA,0x29,0xC,0x29,0x28,0x0,0xA2,0x81,0x8B,0x49,0x48,0x5,0xA2,
0x80,0xA,0x28,0x1,0x28,0xA0,0x2,0x8A,0x0,0x43,0x49,0x40,0x10,0x5C,0x1F,0x96,0xAB,0x8A,
0x6,0x4C,0x28,0xA0,0x2,0x8A,0x0,0x29,0x28,0x1,0x29,0x28,0x1,0x29,0xF,0x1C,0xD0,0x4,0x4,
0xE6,0x81,0x41,0x42,0xD2,0x50,0x2,0x52,0x50,0x6,0x9C,0x1D,0xCD,0x4F,0x54,0x66,0x25,0x14,
0x0,0x51,0x48,0x2,0x92,0x80,0xA,0x5A,0x6,0x14,0x52,0x0,0xA2,0x80,0xA,0x28,0x0,0xA4,0xA0,
0x2,0x8A,0x0,0x29,0xB4,0x1,0x5A,0xE0,0xFC,0xF8,0xA8,0xD6,0x81,0x92,0xD1,0x40,0x5,0x14,0x0,
0x94,0x50,0x3,0x69,0x28,0x1,0x2A,0x17,0x3C,0xD0,0x31,0xB4,0xEA,0x6,0x25,0x25,0x0,0x14,
0x50,0x6,0xA4,0x43,0xB,0x4F,0xA6,0x66,0x25,0x14,0xC0,0x29,0x69,0x0,0x52,0x50,0x30,0xA5,
0xA0,0x2,0x8A,0x0,0x28,0xA4,0x1,0x45,0x0,0x14,0x50,0x2,0x51,0x40,0x5,0x25,0x0,0x52,0x90,
0xE5,0xCD,0x2A,0x50,0x32,0x4A,0x28,0x0,0xA4,0xA0,0x2,0x92,0x80,0x12,0x92,0x80,0x23,
0x67,0x1D,0x5,0x45,0x40,0xC2,0x96,0x81,0x89,0x45,0x2,0x12,0x8A,0x6,0x6B,0x8A,0x5A,0x66,
0x63,0x68,0xA0,0x2,0x96,0x80,0x12,0x8A,0x6,0x14,0xB4,0x0,0x51,0x48,0x2,0x8A,0x0,0x28,
0xA0,0x2,0x8A,0x0,0x4A,0x5A,0x0,0x4A,0x69,0xE9,0x40,0x14,0xBB,0xD4,0x8B,0x41,0x43,0xE8,
0xA0,0x41,0x49,0x40,0x9,0x49,0x40,0x9,0x51,0xC8,0x33,0x40,0x11,0x52,0x50,0x50,0xB4,
0xB4,0x0,0x94,0x50,0x2,0x51,0x40,0x1A,0xF4,0x53,0x32,0xA,0x4A,0x6,0x14,0x50,0x30,0xA4,
0xA0,0x2,0x96,0x80,0xA,0x29,0x0,0x51,0x40,0x5,0x14,0x0,0x51,0x40,0x9,0x4B,0x40,0x9,0x51,
0x4E,0x7F,0x77,0x40,0xCA,0xC3,0xAD,0x4C,0x28,0x1,0x69,0x8F,0xB8,0x73,0xDA,0x80,0x1B,0xE6,
0x7A,0xD3,0xB2,0x28,0x1,0x69,0x28,0x1,0x29,0x28,0x2,0x37,0x5E,0xE2,0xA3,0xA0,0xA0,0xA2,
0x80,0xA,0x4A,0x0,0x28,0xA0,0xD,0x6A,0x29,0x99,0x85,0x25,0x0,0x14,0x50,0x30,0xA2,0x80,
0x12,0x96,0x90,0x5,0x14,0x0,0x51,0x9A,0x0,0x28,0xA0,0x2,0x8A,0x0,0x4A,0x5A,0x0,0x4A,0x82,
0xE0,0xF2,0x28,0x19,0x12,0xD4,0xB4,0x0,0xB4,0x50,0x4,0x65,0x73,0x4C,0xC1,0x14,0x0,0x7,
0xA7,0x66,0x80,0xA,0x4A,0x0,0x2A,0x36,0x1C,0xE6,0x81,0x8C,0xA4,0xA0,0x61,0x45,0x0,0x14,
0x50,0x6,0xB5,0x14,0xCC,0x84,0xA4,0xA0,0x61,0x45,0x3,0xA,0x28,0x0,0xA2,0x90,0x5,0x14,0x0,
0x52,0x32,0x86,0xEB,0x40,0xB,0x45,0x3,0xA,0x28,0x10,0x51,0x40,0xD,0xAA,0xF3,0x1F,0xDE,
0x50,0x31,0x12,0xA4,0xA0,0x5,0xA4,0xA0,0x4,0xA4,0xA0,0x6,0x11,0x9A,0x67,0x4A,0x6,0x1B,
0xA9,0xD9,0xA0,0x2,0x98,0xD4,0x0,0xDA,0x6D,0x3,0xA,0x28,0x0,0xA2,0x80,0x35,0x68,0xA6,
0x64,0x25,0x14,0xC,0x4A,0x28,0x18,0x51,0x40,0x5,0x14,0x80,0x28,0xA0,0x5,0xA2,0x81,0x85,
0x14,0x0,0x52,0x50,0x1,0x45,0x0,0x34,0xD5,0x46,0x39,0x6A,0x0,0x91,0x69,0xF4,0x0,0x52,
0x50,0x1,0x49,0x40,0x9,0x4D,0xA0,0x6,0x91,0x4D,0xC1,0xA0,0x61,0x9A,0x43,0xD2,0x80,0x1B,
0x49,0x40,0xC2,0x8A,0x0,0x28,0xA0,0xD,0x4A,0x4A,0x66,0x61,0x45,0x0,0x14,0x94,0xC,0x28,
0xA0,0x2,0x96,0x90,0x9,0x4B,0x40,0xC2,0x8A,0x0,0x28,0xA0,0x2,0x92,0x80,0xA,0x28,0x2,0x39,
0xE,0x16,0xAB,0xA,0x0,0x94,0x53,0xA8,0x0,0xA2,0x80,0x12,0x92,0x80,0x12,0x92,0x80,0x12,
0x8A,0x6,0x34,0x8A,0x6E,0x28,0x1,0xB4,0x94,0xC,0x28,0xA0,0x2,0x92,0x80,0x35,0x29,0x29,
0x99,0x85,0x14,0x0,0x94,0x50,0x30,0xA2,0x90,0x5,0x2D,0x0,0x14,0x50,0x30,0xA2,0x80,0xA,
0x28,0x0,0xA2,0x80,0x1A,0xD,0x2D,0x0,0x43,0x39,0xE3,0x15,0xA,0xD0,0x32,0x61,0x4B,0x40,
0x84,0xA2,0x80,0x12,0x8A,0x0,0x4A,0x4A,0x0,0x4A,0x28,0x1,0x29,0x28,0x18,0xC3,0x4D,0xA0,
0x61,0x49,0x40,0x5,0x14,0x1,0xA1,0xE6,0x27,0xF7,0xA9,0x3C,0xC4,0xFE,0xF5,0x33,0x30,0xF3,
0x13,0xFB,0xC2,0x8F,0x31,0x3F,0xBC,0x28,0x1,0x77,0xAF,0xF7,0x85,0x2E,0xE5,0xFE,0xF0,
0xA0,0x61,0x91,0xEA,0x28,0xFC,0x69,0x0,0x52,0xD0,0x2,0x51,0x9A,0x0,0x5A,0x28,0x0,0xA2,
0x80,0xA,0x28,0x18,0x52,0x50,0x5,0x69,0xF,0xCD,0x48,0xB4,0xC,0x90,0x52,0xD0,0x20,0xA4,
0xA0,0x2,0x92,0x80,0x12,0x92,0x81,0x85,0x25,0x0,0x14,0x94,0x0,0x86,0x99,0x40,0xC4,0xA2,
0x80,0x12,0x8A,0x0,0xB3,0xF2,0xFA,0xD1,0xF2,0xFF,0x0,0x7A,0x99,0x1,0xF2,0xFF,0x0,0x7A,
0x93,0xE5,0xF5,0xA0,0x62,0xFC,0xBE,0xB4,0x7C,0x9E,0xB4,0x0,0x7C,0x9E,0xB4,0x7C,0x9F,
0xDE,0x14,0x80,0x4C,0x27,0xF7,0xA9,0x70,0x9F,0xDE,0xA6,0x1,0xF2,0x7A,0x8A,0x4F,0x93,
0xFB,0xC2,0x80,0x17,0xE4,0xFE,0xF5,0x1F,0x27,0xF7,0xA9,0x0,0x7C,0x9F,0xDE,0xA3,0xE4,
0xFE,0xFD,0x0,0x1F,0x27,0xFC,0xF4,0xA3,0x2B,0xFD,0xFA,0x0,0x32,0xBF,0xDE,0x34,0x9B,
0x87,0xF7,0x8D,0x3,0x1A,0x71,0xEB,0x48,0xD,0x0,0x48,0xD,0x2D,0x0,0x14,0x50,0x20,0xA4,
0xA0,0x4,0xA2,0x81,0x85,0x25,0x0,0x25,0x14,0x0,0x94,0xD3,0x40,0xD,0xA2,0x81,0x85,0x25,
0x0,0x7F,0xFF,0xD9  
};




//CHAR PROGMEM ARRAY
const char xyz_char[] PROGMEM=
{"0xFF,0xD8,0xFF,0xE0,0x0,0x10,0x4A,0x46,0x49,0x46,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,0xDB,0x0,0x43,0x0,0x3F,0x2B,0x2F,0x37,0x2F,0x27,0x3F,0x37,0x33,0x37,0x47,0x43,0x3F,0x4B,0x5F,0x9E,0x66,0x5F,0x57,0x57,0x5F,0xC1,0x8A,0x92,0x72,0x9E,0xE4,0xC9,0xF0,0xEC,0xE0,0xC9,0xDD,0xD9,0xFC,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xD9,0xDD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF4,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDB,0x0,0x43,0x1,0x43,0x47,0x47,0x5F,0x53,0x5F,0xB9,0x66,0x66,0xB9,0xFF,0xFF,0xDD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC4,0x0,0x1F,0x0,0x0,0x1,0x5,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xFF,0xC4,0x0,0xB5,0x10,0x0,0x2,0x1,0x3,0x3,0x2,0x4,0x3,0x5,0x5,0x4,0x4,0x0,0x0,0x1,0x7D,0x1,0x2,0x3,0x0,0x4,0x11,0x5,0x12,0x21,0x31,0x41,0x6,0x13,0x51,0x61,0x7,0x22,0x71,0x14,0x32,0x81,0x91,0xA1,0x8,0x23,0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,0x33,0x62,0x72,0x82,0x9,0xA,0x16,0x17,0x18,0x19,0x1A,0x25,0x26,0x27,0x28,0x29,0x2A,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFF,0xC4,0x0,0x1F,0x1,0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xFF,0xC4,0x0,0xB5,0x11,0x0,0x2,0x1,0x2,0x4,0x4,0x3,0x4,0x7,0x5,0x4,0x4,0x0,0x1,0x2,0x77,0x0,0x1,0x2,0x3,0x11,0x4,0x5,0x21,0x31,0x6,0x12,0x41,0x51,0x7,0x61,0x71,0x13,0x22,0x32,0x81,0x8,0x14,0x42,0x91,0xA1,0xB1,0xC1,0x9,0x23,0x33,0x52,0xF0,0x15,0x62,0x72,0xD1,0xA,0x16,0x24,0x34,0xE1,0x25,0xF1,0x17,0x18,0x19,0x1A,0x26,0x27,0x28,0x29,0x2A,0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFF,0xC0,0x0,0x11,0x8,0x0,0xF0,0x1,0x40,0x3,0x1,0x21,0x0,0x2,0x11,0x1,0x3,0x11,0x1,0xFF,0xDA,0x0,0xC,0x3,0x1,0x0,0x2,0x11,0x3,0x11,0x0,0x3F,0x0,0xBF,0x45,0x59,0xCE,0x32,0x73,0x88,0xE9,0x83,0xEE,0x8A,0x45,0x12,0xB7,0x6A,0x64,0x7F,0x79,0x8D,0x0,0x49,0x45,0x2,0x1B,0x48,0x28,0x18,0x1A,0x28,0x18,0xD3,0x45,0x0,0x35,0xA3,0xD,0xD6,0xAB,0xBC,0x45,0x69,0xC,0x8E,0xA4,0x8E,0x62,0x9D,0x79,0x14,0xC,0x9D,0x58,0x30,0xCA,0x9A,0x75,0x2,0xA,0x4A,0x0,0x29,0x28,0x0,0xA6,0xD0,0x4,0x33,0x1E,0x6A,0xA,0xA,0x15,0x8E,0x16,0x93,0x1C,0x64,0xD3,0x1,0x33,0x4C,0xA4,0x50,0xA7,0xA5,0x25,0x20,0x16,0x83,0x40,0xD,0xA2,0x80,0x12,0x8A,0x0,0xDC,0x5A,0x75,0x59,0x81,0x4,0xDC,0xC8,0xAB,0x4F,0x5E,0xB4,0x86,0x2B,0x1C,0x64,0xFA,0x52,0x44,0x31,0x18,0xA0,0x9,0x29,0x28,0x10,0xDA,0x4A,0x6,0x14,0x94,0xC,0x29,0x29,0x0,0x51,0x40,0xC8,0xDE,0x10,0xDD,0x38,0x35,0x5D,0x90,0xA9,0xE6,0x81,0x8D,0x4,0xA9,0xC8,0xE0,0xD4,0xF1,0xCE,0x1B,0x87,0xE0,0xD0,0x4,0xD4,0x94,0x8,0x5A,0x6D,0x0,0x25,0x25,0x3,0x20,0x9F,0xA8,0xA8,0x45,0x3,0x1C,0x6,0x5B,0xD8,0x53,0x5C,0xD3,0x1,0xB4,0xE,0xB5,0x23,0x10,0xD0,0x28,0x18,0xB4,0xD3,0x40,0x9,0x45,0x0,0x14,0x94,0x1,0xBB,0x45,0x51,0x81,0x2,0xFC,0xD2,0x93,0x52,0xAF,0x7A,0x6,0x31,0xFA,0x63,0xFB,0xC6,0xA5,0xA0,0x2,0x92,0x80,0x19,0xBB,0xF2,0xA5,0xA0,0x60,0x69,0x29,0x0,0x94,0x50,0x31,0x68,0xA0,0x2,0x9B,0x8C,0xAF,0xCD,0x40,0x10,0x3C,0x1F,0xDD,0xE6,0xA1,0xC5,0x3,0x1F,0x1C,0xAC,0x9E,0xE3,0xD2,0xAC,0x23,0xAB,0xF4,0xFC,0xA8,0x1,0x69,0x28,0x10,0x86,0x92,0x81,0x95,0xAE,0x3E,0xFD,0x34,0x52,0x18,0xBF,0x75,0x71,0xDE,0xA2,0xAA,0x0,0xA2,0xA4,0xA1,0xD,0x2,0x80,0x16,0x9A,0x68,0x1,0x28,0xA0,0x4,0xA2,0x80,0x37,0x39,0xA4,0x63,0xB5,0x49,0xAA,0x30,0x22,0x88,0x60,0x66,0xA6,0x1F,0x76,0x81,0x91,0x8E,0x67,0xFA,0xA,0x9A,0x80,0x12,0x9A,0x68,0x1,0x9B,0x69,0x40,0xC5,0x22,0x82,0x96,0x98,0x86,0xD2,0xD2,0x18,0x51,0x40,0x5,0x14,0x0,0x94,0xD6,0x45,0x7E,0xBF,0x9D,0x0,0x57,0x78,0x4A,0xD4,0x5D,0xF,0xBD,0x5,0x13,0x25,0xC7,0x69,0x3F,0x3A,0x9B,0xB6,0x68,0x24,0x4A,0x4A,0x6,0x53,0x7E,0x58,0x9A,0xE,0x36,0xD0,0x30,0x62,0xD,0x47,0x40,0xC5,0x1D,0x28,0xA4,0x31,0x29,0x28,0x1,0xD4,0xD3,0x40,0x9,0x49,0x40,0x5,0x14,0x1,0xBD,0x50,0xDC,0x1F,0x97,0x1E,0xB4,0x12,0x28,0xFB,0xB5,0x25,0x32,0x48,0xE2,0xE7,0x2D,0xEB,0x52,0xD2,0x29,0x9,0x48,0x7A,0xD3,0x24,0x4A,0x4A,0x62,0xA,0x29,0xC,0x4A,0x28,0x0,0xEF,0x41,0xA0,0x0,0x52,0xD0,0x2,0x52,0x50,0x1,0x51,0xBC,0xA,0xDD,0x38,0xA0,0xA,0xCE,0x85,0x7A,0xD2,0x2B,0xB4,0x7F,0x77,0xF2,0xA0,0xA2,0x74,0x95,0x5F,0xD8,0xFA,0x50,0xE7,0x8,0x68,0x11,0x50,0x53,0xFF,0x0,0x82,0x81,0x90,0xD2,0x52,0x28,0x7F,0x6A,0x4A,0x0,0x29,0x28,0x10,0x52,0x50,0x31,0x28,0xA0,0x2,0x92,0x80,0x37,0xAA,0xBC,0xBF,0x34,0xC3,0xDA,0x82,0x59,0x2E,0x33,0x44,0xA7,0x8,0x69,0x92,0x2A,0xD,0xA8,0x5,0x3A,0x91,0x62,0x51,0x4C,0x91,0xB4,0x94,0x8,0x29,0x33,0x40,0xB,0x45,0x0,0x14,0x50,0x1,0x49,0x40,0x5,0x14,0x0,0x94,0x50,0x3,0x4F,0x3C,0x1E,0x95,0x4,0x96,0xFF,0x0,0xDD,0x34,0x86,0x57,0x61,0x8A,0x53,0x2B,0x15,0xDA,0x79,0xA6,0x31,0xA2,0xA4,0x14,0x80,0x8E,0x50,0x1,0xE2,0xA3,0xA0,0x63,0x85,0x14,0xC,0x4A,0x5A,0x4,0x25,0x36,0x81,0x85,0x14,0x0,0x94,0x50,0x6,0xF5,0x57,0x41,0x92,0xED,0xEF,0x4C,0x86,0x4B,0x1F,0xDD,0xCD,0x32,0x4E,0x59,0x56,0x80,0x26,0xA2,0x91,0x42,0x52,0x53,0x24,0x4A,0x28,0x10,0x94,0x94,0x0,0xB4,0x50,0x2,0xD2,0x50,0x3,0x49,0x21,0xC7,0x1C,0x52,0x8A,0x6,0x2D,0x25,0x2,0xA,0x43,0x40,0x9,0x49,0x40,0x11,0xBA,0x87,0xEB,0x55,0x1C,0x61,0xCE,0x3A,0x52,0x28,0x65,0x4A,0x28,0x19,0x1B,0x9C,0xB5,0x34,0x8A,0x6,0x25,0x2D,0x0,0x2D,0x14,0x8,0x4A,0x6D,0x3,0xA,0x4A,0x0,0x28,0xA0,0xD,0xB9,0x4E,0x23,0x35,0x14,0x5C,0x2D,0x32,0x19,0x37,0x41,0x4C,0x5F,0x9A,0x62,0x7D,0x28,0xE,0xA4,0xB4,0x52,0x29,0x89,0x4D,0x34,0xC8,0xA,0x28,0x0,0xA4,0xC5,0x0,0x14,0xB4,0x0,0xB4,0x50,0x31,0xD,0x25,0x2,0xA,0x28,0x1,0xB4,0x50,0x1,0x4D,0xA0,0x6,0x31,0xC5,0x53,0x7F,0xBD,0x48,0xA0,0x2,0x9D,0xD1,0x68,0x2,0x2A,0x75,0x3,0x23,0xA2,0x81,0x8B,0x4B,0x40,0x9,0x49,0x40,0x9,0x49,0x40,0x5,0x14,0x1,0xAF,0x70,0x78,0xB,0x4A,0x9D,0x69,0x90,0x3D,0xCE,0x1,0xA6,0xC0,0x3E,0x4C,0xFA,0xD0,0x3E,0xA4,0xB4,0x52,0x18,0xDA,0x29,0x90,0x14,0x9D,0xE8,0x0,0xA2,0x80,0x12,0x8A,0x0,0x5A,0x5A,0x6,0x36,0x8A,0x42,0xA,0x29,0x80,0x94,0x86,0x80,0xA,0x6D,0x0,0x31,0xFE,0xE9,0xAA,0x54,0x8A,0x1E,0x29,0x24,0x3D,0xA8,0x1,0x82,0x9D,0x40,0xC6,0x35,0x32,0x81,0x8B,0x4B,0x9A,0x0,0x4A,0x4A,0x0,0x29,0x28,0x0,0xA2,0x80,0x35,0x25,0x39,0x9B,0xE9,0x52,0x42,0x39,0x26,0x99,0x3,0x65,0x3C,0x7D,0x6A,0x70,0x30,0x31,0x48,0x68,0x5A,0x28,0x18,0x94,0x94,0xC8,0x16,0x92,0x81,0x89,0x45,0x2,0xA,0x41,0x40,0xB,0x4B,0x40,0xC4,0xEF,0x4B,0x40,0x9,0x49,0x48,0x4,0xA4,0xA0,0x41,0x4D,0x34,0xC,0x86,0xE0,0xE1,0x2A,0xB0,0xEB,0x40,0xC9,0x5,0x44,0xFC,0xB5,0x0,0x2,0x9D,0x40,0xC,0x7A,0x65,0x5,0x9,0x45,0x0,0x14,0x50,0x2,0x51,0x40,0x5,0x14,0x1,0xA3,0xDE,0xAC,0xC7,0xFE,0xAF,0x3E,0xB4,0xC8,0x23,0xEB,0x2A,0x8A,0xB1,0x48,0x68,0x28,0xA0,0x18,0xDA,0x33,0xCD,0x32,0x42,0x8A,0x0,0x29,0x28,0x0,0xA2,0x81,0x85,0x2D,0x0,0x34,0x52,0xD2,0x1,0x29,0x28,0x10,0xDC,0xD2,0x8E,0x68,0x18,0x53,0x68,0x2,0xBD,0xD7,0x5A,0x85,0x68,0x19,0x27,0x45,0xAA,0xF4,0x1,0x20,0xA5,0xA0,0x64,0x46,0x9B,0x40,0xC4,0xA2,0x80,0xA,0x28,0x1,0x28,0xA0,0x2,0x8A,0x0,0xD1,0xC5,0x59,0x63,0x8C,0x2D,0x4,0x8D,0x8B,0x97,0x63,0x53,0x50,0x34,0x14,0x94,0x9,0x89,0x49,0x4C,0x91,0x68,0xA0,0x8,0xA5,0x66,0x5F,0xBA,0x2A,0x41,0xC8,0xA0,0x62,0xD2,0x52,0x0,0xA2,0x80,0xA,0x5A,0x0,0x6D,0x6,0x80,0x1B,0x45,0x0,0x14,0x94,0x8,0xA5,0x39,0xCB,0xD0,0xB4,0x14,0x12,0xFD,0xDC,0x54,0x43,0xAD,0x0,0x49,0x48,0x7A,0x50,0x32,0x3A,0x6D,0x3,0xA,0x4A,0x0,0x28,0xA0,0x2,0x92,0x80,0xA,0x28,0x3,0x56,0x3E,0x64,0x14,0x3B,0x7C,0xED,0x41,0x24,0xB0,0x8F,0x92,0xA4,0xA0,0x61,0x49,0x4C,0x42,0x51,0x41,0x21,0x45,0x0,0x14,0x52,0x18,0x52,0x1C,0x53,0x0,0x2,0x83,0x48,0x2,0x96,0x80,0x12,0x92,0x80,0x1B,0x45,0x0,0x14,0xD3,0xD2,0x80,0x28,0x9E,0x69,0xEB,0x40,0xC7,0xD2,0x6C,0x5F,0x4A,0x0,0x4D,0x94,0xC6,0x56,0xA0,0x64,0x64,0x11,0xDA,0x9B,0x40,0xC5,0xA4,0x6A,0x0,0x6D,0x14,0x0,0x52,0x50,0x1,0x45,0x0,0x6B,0xC7,0xC6,0xF6,0xF4,0xA8,0x7F,0x99,0xA6,0x41,0x71,0x78,0x14,0xB4,0x86,0x25,0x14,0xC4,0x36,0x96,0x81,0x9,0x4B,0x40,0x9,0x46,0x68,0x0,0xA2,0x90,0xC5,0xA4,0xA0,0x3,0x34,0xB4,0x0,0x94,0x50,0x3,0x68,0xA0,0x6,0xD4,0x73,0x9C,0x46,0x68,0x2,0xA5,0x4A,0xB4,0xC,0x5A,0x28,0x0,0xA2,0x80,0x12,0x9A,0x68,0x1,0xBB,0x45,0x2D,0x0,0x37,0x9,0xDD,0x69,0x3C,0xB4,0xEC,0xD4,0x0,0xD6,0x4D,0xA3,0x35,0x1D,0x5,0x5,0x14,0x1,0xAA,0xDF,0x2D,0xBF,0xD6,0x99,0x1F,0x32,0xA,0x64,0x16,0xE9,0x28,0x0,0xA4,0x34,0xC4,0x25,0x2D,0x20,0x12,0x8A,0x0,0x5A,0x4A,0x0,0x29,0x69,0xC,0x4A,0x4A,0x0,0x29,0x68,0x1,0x28,0xA0,0x4,0xA2,0x80,0x12,0xAB,0xDC,0x9E,0xD4,0x1,0x2,0xD4,0xA2,0x81,0x85,0x14,0x0,0x51,0x40,0x9,0x49,0x40,0x9,0x49,0x40,0x9,0x49,0x40,0xC,0x7A,0x8E,0x82,0x82,0x96,0x80,0x34,0xEE,0xF,0xCC,0xAB,0xE9,0x4B,0x6C,0x3A,0x9A,0x64,0x13,0xD1,0x40,0x84,0xA4,0xA6,0x1,0x45,0x20,0xA,0x28,0x0,0xA2,0x80,0xA,0x29,0xC,0x29,0x28,0x1,0x69,0x28,0x1,0x29,0x68,0x1,0x3A,0xD2,0x74,0xE2,0x80,0xA,0xA9,0x39,0xF9,0xE8,0x1,0x89,0x52,0x50,0x30,0xA2,0x80,0xA,0x28,0x1,0x29,0x28,0x1,0x29,0x28,0x1,0xB4,0x50,0x4,0x2C,0x77,0x1A,0x4A,0xA,0x12,0x96,0x80,0x34,0x24,0x39,0x76,0xAB,0x10,0xC,0x47,0x4C,0xCC,0x92,0x92,0x98,0x84,0xA2,0x90,0xC2,0x8A,0x0,0x4A,0x5A,0x0,0x4A,0x5A,0x0,0x28,0x14,0x86,0x14,0x94,0x0,0x51,0x40,0x9,0x4B,0x40,0x9,0x49,0x40,0x9,0x54,0x5D,0xB2,0x49,0xA0,0x63,0x92,0x9F,0x40,0xB,0x49,0x40,0x5,0x14,0x0,0xDA,0x4A,0x0,0x4A,0x4A,0x0,0x2A,0x37,0x6E,0xD4,0xC,0x65,0x25,0x3,0x12,0x96,0x80,0x2F,0x55,0xC1,0xD2,0xA8,0xCC,0x5A,0x4A,0x4,0x25,0x14,0x86,0x2D,0x25,0x0,0x14,0x50,0x1,0x45,0x21,0x85,0x14,0x0,0x51,0x40,0x5,0x25,0x0,0x14,0x50,0x0,0x69,0xB4,0x0,0xC9,0xE,0x10,0xD5,0x3A,0x6,0x4A,0x29,0x68,0x1,0x69,0x28,0x0,0xA4,0xA0,0x4,0xA4,0xA0,0x4,0xA4,0xA0,0x6,0xB3,0x6D,0xA8,0x68,0x28,0x75,0x25,0x0,0x25,0x25,0x0,0x69,0x27,0x32,0x55,0x81,0x4C,0xCC,0x5A,0x4A,0x62,0xA,0x29,0xC,0x29,0x28,0x0,0xA2,0x81,0x8B,0x49,0x48,0x5,0xA2,0x80,0xA,0x28,0x1,0x28,0xA0,0x2,0x8A,0x0,0x43,0x49,0x40,0x10,0x5C,0x1F,0x96,0xAB,0x8A,0x6,0x4C,0x28,0xA0,0x2,0x8A,0x0,0x29,0x28,0x1,0x29,0x28,0x1,0x29,0xF,0x1C,0xD0,0x4,0x4,0xE6,0x81,0x41,0x42,0xD2,0x50,0x2,0x52,0x50,0x6,0x9C,0x1D,0xCD,0x4F,0x54,0x66,0x25,0x14,0x0,0x51,0x48,0x2,0x92,0x80,0xA,0x5A,0x6,0x14,0x52,0x0,0xA2,0x80,0xA,0x28,0x0,0xA4,0xA0,0x2,0x8A,0x0,0x29,0xB4,0x1,0x5A,0xE0,0xFC,0xF8,0xA8,0xD6,0x81,0x92,0xD1,0x40,0x5,0x14,0x0,0x94,0x50,0x3,0x69,0x28,0x1,0x2A,0x17,0x3C,0xD0,0x31,0xB4,0xEA,0x6,0x25,0x25,0x0,0x14,0x50,0x6,0xA4,0x43,0xB,0x4F,0xA6,0x66,0x25,0x14,0xC0,0x29,0x69,0x0,0x52,0x50,0x30,0xA5,0xA0,0x2,0x8A,0x0,0x28,0xA4,0x1,0x45,0x0,0x14,0x50,0x2,0x51,0x40,0x5,0x25,0x0,0x52,0x90,0xE5,0xCD,0x2A,0x50,0x32,0x4A,0x28,0x0,0xA4,0xA0,0x2,0x92,0x80,0x12,0x92,0x80,0x23,0x67,0x1D,0x5,0x45,0x40,0xC2,0x96,0x81,0x89,0x45,0x2,0x12,0x8A,0x6,0x6B,0x8A,0x5A,0x66,0x63,0x68,0xA0,0x2,0x96,0x80,0x12,0x8A,0x6,0x14,0xB4,0x0,0x51,0x48,0x2,0x8A,0x0,0x28,0xA0,0x2,0x8A,0x0,0x4A,0x5A,0x0,0x4A,0x69,0xE9,0x40,0x14,0xBB,0xD4,0x8B,0x41,0x43,0xE8,0xA0,0x41,0x49,0x40,0x9,0x49,0x40,0x9,0x51,0xC8,0x33,0x40,0x11,0x52,0x50,0x50,0xB4,0xB4,0x0,0x94,0x50,0x2,0x51,0x40,0x1A,0xF4,0x53,0x32,0xA,0x4A,0x6,0x14,0x50,0x30,0xA4,0xA0,0x2,0x96,0x80,0xA,0x29,0x0,0x51,0x40,0x5,0x14,0x0,0x51,0x40,0x9,0x4B,0x40,0x9,0x51,0x4E,0x7F,0x77,0x40,0xCA,0xC3,0xAD,0x4C,0x28,0x1,0x69,0x8F,0xB8,0x73,0xDA,0x80,0x1B,0xE6,0x7A,0xD3,0xB2,0x28,0x1,0x69,0x28,0x1,0x29,0x28,0x2,0x37,0x5E,0xE2,0xA3,0xA0,0xA0,0xA2,0x80,0xA,0x4A,0x0,0x28,0xA0,0xD,0x6A,0x29,0x99,0x85,0x25,0x0,0x14,0x50,0x30,0xA2,0x80,0x12,0x96,0x90,0x5,0x14,0x0,0x51,0x9A,0x0,0x28,0xA0,0x2,0x8A,0x0,0x4A,0x5A,0x0,0x4A,0x82,0xE0,0xF2,0x28,0x19,0x12,0xD4,0xB4,0x0,0xB4,0x50,0x4,0x65,0x73,0x4C,0xC1,0x14,0x0,0x7,0xA7,0x66,0x80,0xA,0x4A,0x0,0x2A,0x36,0x1C,0xE6,0x81,0x8C,0xA4,0xA0,0x61,0x45,0x0,0x14,0x50,0x6,0xB5,0x14,0xCC,0x84,0xA4,0xA0,0x61,0x45,0x3,0xA,0x28,0x0,0xA2,0x90,0x5,0x14,0x0,0x52,0x32,0x86,0xEB,0x40,0xB,0x45,0x3,0xA,0x28,0x10,0x51,0x40,0xD,0xAA,0xF3,0x1F,0xDE,0x50,0x31,0x12,0xA4,0xA0,0x5,0xA4,0xA0,0x4,0xA4,0xA0,0x6,0x11,0x9A,0x67,0x4A,0x6,0x1B,0xA9,0xD9,0xA0,0x2,0x98,0xD4,0x0,0xDA,0x6D,0x3,0xA,0x28,0x0,0xA2,0x80,0x35,0x68,0xA6,0x64,0x25,0x14,0xC,0x4A,0x28,0x18,0x51,0x40,0x5,0x14,0x80,0x28,0xA0,0x5,0xA2,0x81,0x85,0x14,0x0,0x52,0x50,0x1,0x45,0x0,0x34,0xD5,0x46,0x39,0x6A,0x0,0x91,0x69,0xF4,0x0,0x52,0x50,0x1,0x49,0x40,0x9,0x4D,0xA0,0x6,0x91,0x4D,0xC1,0xA0,0x61,0x9A,0x43,0xD2,0x80,0x1B,0x49,0x40,0xC2,0x8A,0x0,0x28,0xA0,0xD,0x4A,0x4A,0x66,0x61,0x45,0x0,0x14,0x94,0xC,0x28,0xA0,0x2,0x96,0x90,0x9,0x4B,0x40,0xC2,0x8A,0x0,0x28,0xA0,0x2,0x92,0x80,0xA,0x28,0x2,0x39,0xE,0x16,0xAB,0xA,0x0,0x94,0x53,0xA8,0x0,0xA2,0x80,0x12,0x92,0x80,0x12,0x92,0x80,0x12,0x8A,0x6,0x34,0x8A,0x6E,0x28,0x1,0xB4,0x94,0xC,0x28,0xA0,0x2,0x92,0x80,0x35,0x29,0x29,0x99,0x85,0x14,0x0,0x94,0x50,0x30,0xA2,0x90,0x5,0x2D,0x0,0x14,0x50,0x30,0xA2,0x80,0xA,0x28,0x0,0xA2,0x80,0x1A,0xD,0x2D,0x0,0x43,0x39,0xE3,0x15,0xA,0xD0,0x32,0x61,0x4B,0x40,0x84,0xA2,0x80,0x12,0x8A,0x0,0x4A,0x4A,0x0,0x4A,0x28,0x1,0x29,0x28,0x18,0xC3,0x4D,0xA0,0x61,0x49,0x40,0x5,0x14,0x1,0xA1,0xE6,0x27,0xF7,0xA9,0x3C,0xC4,0xFE,0xF5,0x33,0x30,0xF3,0x13,0xFB,0xC2,0x8F,0x31,0x3F,0xBC,0x28,0x1,0x77,0xAF,0xF7,0x85,0x2E,0xE5,0xFE,0xF0,0xA0,0x61,0x91,0xEA,0x28,0xFC,0x69,0x0,0x52,0xD0,0x2,0x51,0x9A,0x0,0x5A,0x28,0x0,0xA2,0x80,0xA,0x28,0x18,0x52,0x50,0x5,0x69,0xF,0xCD,0x48,0xB4,0xC,0x90,0x52,0xD0,0x20,0xA4,0xA0,0x2,0x92,0x80,0x12,0x92,0x81,0x85,0x25,0x0,0x14,0x94,0x0,0x86,0x99,0x40,0xC4,0xA2,0x80,0x12,0x8A,0x0,0xB3,0xF2,0xFA,0xD1,0xF2,0xFF,0x0,0x7A,0x99,0x1,0xF2,0xFF,0x0,0x7A,0x93,0xE5,0xF5,0xA0,0x62,0xFC,0xBE,0xB4,0x7C,0x9E,0xB4,0x0,0x7C,0x9E,0xB4,0x7C,0x9F,0xDE,0x14,0x80,0x4C,0x27,0xF7,0xA9,0x70,0x9F,0xDE,0xA6,0x1,0xF2,0x7A,0x8A,0x4F,0x93,0xFB,0xC2,0x80,0x17,0xE4,0xFE,0xF5,0x1F,0x27,0xF7,0xA9,0x0,0x7C,0x9F,0xDE,0xA3,0xE4,0xFE,0xFD,0x0,0x1F,0x27,0xFC,0xF4,0xA3,0x2B,0xFD,0xFA,0x0,0x32,0xBF,0xDE,0x34,0x9B,0x87,0xF7,0x8D,0x3,0x1A,0x71,0xEB,0x48,0xD,0x0,0x48,0xD,0x2D,0x0,0x14,0x50,0x20,0xA4,0xA0,0x4,0xA2,0x81,0x85,0x25,0x0,0x25,0x14,0x0,0x94,0xD3,0x40,0xD,0xA2,0x81,0x85,0x25,0x0,0x7F,0xFF,0xD9"};


uint8_t byteval[] PROGMEM={};


uint32_t icount = 0;


#define TFT_GREY        0x5AEB                              // GREY
#define TFT_BLACK       0x0000      /*   0,   0,   0 */    //BLACK
#define TFT_NAVY        0x000F      /*   0,   0, 128 */    //BORDO
#define TFT_DARKGREEN   0x03E0      /*   0, 128,   0 */    //DARKGREEN
#define TFT_DARKCYAN    0x03EF      /*   0, 128, 128 */    //OLIVA
#define TFT_MAROON      0x7800      /* 128,   0,   0 */     //LIGHTBLUE    
#define TFT_PURPLE      0x780F      /* 128,   0, 128 */    //PURPLE
#define TFT_OLIVE       0x7BE0      /* 128, 128,   0 */    //GREYBLUE
#define TFT_LIGHTGREY   0xD69A      /* 211, 211, 211 */    //LIGHTGREY
#define TFT_DARKGREY    0x7BEF      /* 128, 128, 128 */    //DARKREY
#define TFT_RED        0x001F      /*   0,   0, 255 */    //RED 
#define TFT_GREEN       0x07E0      /*   0, 255,   0 */    //GREEN
#define TFT_YELLOW        0x07FF      /*   0, 255, 255 */    //YELLOW
#define TFT_BLUE         0xF800      /* 255,   0,   0 */    //BLUE
#define TFT_MAGENTA     0xF81F      /* 255,   0, 255 */    //LILA
//#define TFT_LIGHTGREEN      0xFFE0      /* 255, 255,   0 */    //LIGHTGREEN
#define TFT_CYAN        0xFDA0      /*   0, 255, 255 */
#define TFT_WHITE       0xFFFF      /* 255, 255, 255 */    //WHITE
#define TFT_ORANGE      0xFDA0      /* 255, 180,   0 */    //RESIDA sky
#define TFT_GREENYELLOW 0xB7E0      /* 180, 255,   0 */    //RESIDA
#define TFT_PINK        0xFE19      /* 255, 192, 203 */ //Lighter pink, was 0xFC9F      //WHITEBLUE
#define TFT_BROWN       0x9A60      /* 150,  75,   0 */    //DARKBLUE
#define TFT_GOLD        0xFEA0      /* 255, 215,   0 */    //LIGHTLIGHTBLUE
#define TFT_SILVER      0xC618      /* 192, 192, 192 */    //SILVER
#define TFT_SKYBLUE     0x867D      /* 135, 206, 235 */    //LIGHTBEIJE
#define TFT_VIOLET      0x915C      /* 180,  46, 226 */    //VIOLET

#define RED2RED 0
#define GREEN2GREEN 1
#define BLUE2BLUE 2
#define BLUE2RED 3
#define GREEN2RED 4
#define TFT_GREY 0x2104 // Dark grey 16 bit colour


////////////////////////////////////////////// START SW BODY ////////////////////////////////////
////////////////////////////////////////////// START SW BODY ////////////////////////////////////
////////////////////////////////////////////// START SW BODY ////////////////////////////////////
////////////////////////////////////////////// START SW BODY ////////////////////////////////////
////////////////////////////////////////////// START SW BODY ////////////////////////////////////
////////////////////////////////////////////// START SW BODY ////////////////////////////////////



//####################################################################################################
// Draw a JPEG on the TFT pulled from a program memory array
//####################################################################################################
void drawArrayJpeg(const uint8_t arrayname[], uint32_t array_size, int xpos, int ypos) {

  int x = xpos;
  int y = ypos;

  JpegDec.decodeArray(arrayname, array_size);

  
  jpegInfo(); // Print information from the JPEG file (could comment this line out)
  
  renderJPEG(x, y);
  
  Serial.println("#########################");
}//void drawArrayJpeg(const uint8_t arrayname[], uint32_t array_size, int xpos, int ypos)

//####################################################################################################
// Draw a JPEG on the TFT, images will be cropped on the right/bottom sides if they do not fit
//####################################################################################################
// This function assumes xpos,ypos is a valid screen coordinate. For convenience images that do not
// fit totally on the screen are cropped to the nearest MCU size and may leave right/bottom borders.
void renderJPEG(int xpos, int ypos) {

  // retrieve infomration about the image
  uint16_t *pImg;
  uint16_t mcu_w = JpegDec.MCUWidth;
  uint16_t mcu_h = JpegDec.MCUHeight;
  uint32_t max_x = JpegDec.width;
  uint32_t max_y = JpegDec.height;

  // Jpeg images are draw as a set of image block (tiles) called Minimum Coding Units (MCUs)
  // Typically these MCUs are 16x16 pixel blocks
  // Determine the width and height of the right and bottom edge image blocks
  uint32_t min_w = minimum(mcu_w, max_x % mcu_w);
  uint32_t min_h = minimum(mcu_h, max_y % mcu_h);

  // save the current image block size
  uint32_t win_w = mcu_w;
  uint32_t win_h = mcu_h;

  // record the current time so we can measure how long it takes to draw an image
  uint32_t drawTime = millis();

  // save the coordinate of the right and bottom edges to assist image cropping
  // to the screen size
  max_x += xpos;
  max_y += ypos;

  // read each MCU block until there are no more
  while (JpegDec.read()) {
	  
    // save a pointer to the image block
    pImg = JpegDec.pImage ;

    // calculate where the image block should be drawn on the screen
    int mcu_x = JpegDec.MCUx * mcu_w + xpos;  // Calculate coordinates of top left corner of current MCU
    int mcu_y = JpegDec.MCUy * mcu_h + ypos;

    // check if the image block size needs to be changed for the right edge
    if (mcu_x + mcu_w <= max_x) win_w = mcu_w;
    else win_w = min_w;

    // check if the image block size needs to be changed for the bottom edge
    if (mcu_y + mcu_h <= max_y) win_h = mcu_h;
    else win_h = min_h;

    // copy pixels into a contiguous block
    if (win_w != mcu_w)
    {
      uint16_t *cImg;
      int p = 0;
      cImg = pImg + win_w;
      for (int h = 1; h < win_h; h++)
      {
        p += mcu_w;
        for (int w = 0; w < win_w; w++)
        {
          *cImg = *(pImg + w + p);
          cImg++;
        }
      }
    }

    // calculate how many pixels must be drawn
    uint32_t mcu_pixels = win_w * win_h;

    tft.startWrite();

    // draw image MCU block only if it will fit on the screen
    if (( mcu_x + win_w ) <= tft.width() && ( mcu_y + win_h ) <= tft.height())
    {

      // Now set a MCU bounding window on the TFT to push pixels into (x, y, x + width - 1, y + height - 1)
      tft.setAddrWindow(mcu_x, mcu_y, win_w, win_h);

      // Write all MCU pixels to the TFT window
      while (mcu_pixels--) {
        // Push each pixel to the TFT MCU area
        tft.pushColor(*pImg++);
      }

    }
    else if ( (mcu_y + win_h) >= tft.height()) JpegDec.abort(); // Image has run off bottom of screen so abort decoding

    tft.endWrite();
  }

  // calculate how long it took to draw the image
  drawTime = millis() - drawTime;

  // print the results to the serial port
  Serial.print(F(  "Total render time was    : ")); Serial.print(drawTime); Serial.println(F(" ms"));
  Serial.println(F(""));
}//void renderJPEG(int xpos, int ypos)void renderJPEG(int xpos, int ypos)

//####################################################################################################
// Print image information to the serial port (optional)
//####################################################################################################
void jpegInfo() {
  Serial.println(F("==============="));
  Serial.println(F("JPEG image info"));
  Serial.println(F("==============="));
  Serial.print(F(  "Width      :")); Serial.println(JpegDec.width);
  Serial.print(F(  "Height     :")); Serial.println(JpegDec.height);
  Serial.print(F(  "Components :")); Serial.println(JpegDec.comps);
  Serial.print(F(  "MCU / row  :")); Serial.println(JpegDec.MCUSPerRow);
  Serial.print(F(  "MCU / col  :")); Serial.println(JpegDec.MCUSPerCol);
  Serial.print(F(  "Scan type  :")); Serial.println(JpegDec.scanType);
  Serial.print(F(  "MCU width  :")); Serial.println(JpegDec.MCUWidth);
  Serial.print(F(  "MCU height :")); Serial.println(JpegDec.MCUHeight);
  Serial.println(F("==============="));
}//void jpegInfo()void jpegInfo()void jpegInfo()void jpegInfo()


////////////////////////////////////// SETUP () ///////////////////////////////////////////// 

void setup() 
{

Serial.begin(115200);
 tft.begin();
 tft.setRotation(1);
tft.fillScreen(TFT_BLACK);

const int16_t len_xyz_char = sizeof(xyz_char)/sizeof(xyz_char[0]);

for (int i = 0; i < len_xyz_char; i++) {
     byteval[i] = pgm_read_word(xyz_char + i); 


    tft.setRotation(1);  // portrait
    drawArrayJpeg(byteval, sizeof(GAUGE), 0, 0); // Draw a jpeg image stored in memory


}

}// SETUP()   SETUP()  SETUP() SETUP()   SETUP()  SETUP()  SETUP()   SETUP()  SETUP()  


 
////////////////////////////////////// LOOP () ///////////////////////////////////////////// 
////////////////////////////////////// LOOP () ///////////////////////////////////////////// 
void loop() 
{

///////////////////////////////////// LOOP() //////////////////////////////////////////// 
}//////////////////////////////////// LOOP() /////////////////////////////////////////////

Please fix your message, extracting a message text from the code tags of the program

On the esp32 get rid of the PROGMEM. It does nothing for you and will simplify your life to get rid of it.

I am using PROGMEM uint8 array just because the "DrawJPG" library works with this kind of array.
I have a doubts, the Char array converted to Uint array cause this trouble.

When I try to check how the Char Array was converted to Uint8 array, I printed the output in the Serial monitor and according to how you print, with Serial.print(data,HEX) or not, the array appear in HEX ASCII code or in DEC bytes .
How can I be sure that my Char array was converted 100% the same , but in Uint8_t value?

I mean "0xFF" to 0xFF and ctra...
If the "0xFF" was converted to 255, then the draw library couldn't guess that this was "0xFF." I checked it yet, and respectively, the image can't be printed on the TFT.

So, my problem is placed on the bottom of my whole program , Reading of the Progmem Char array, transferring the whole char Progmem to uint8_t Array Progmem and place it to the DrawArray function from the library.

For me is exactly same how will place the JPG uint8_t array to the JPG draw library, with Progmem or normal Uint8 Array, sure avoiding Progmem will be spent much more RAM. But any way the library can work without Progmem array, just with normal Uint8_t array or with Unsigned char Array, too .
Most important is to be accepted the JPG which the array is providing to the JPGDDecode.h library.

Sorry if it is appeare some gram. error, I am typing from my mobile now.

There's no need for PROGMEM on ESP32. It has no effect -- that word is translated into nothing; it disappears.

There's no need to "convert" uint8_t to char; you can just do a cast.

These:

uint8_t GAUGE[] PROGMEM = {
0xFF,0xD8,0xFF,0xE0

are the first four bytes of an array, while this:

const char xyz_char[] PROGMEM=
"0xFF,0xD8,0xFF,0xE0

is 19 bytes of text at the start of a literal string; but you actually have this:

const char xyz_char[] PROGMEM=
{"0xFF,0xD8,0xFF,0xE0

which has that literal string as the first and only element in an initializer list. This is allowed, but confusing.

The array has 3023 elements, which is 3023 bytes. The string, with all the ",0x", is 14516 bytes (including the NUL terminator). It's not an exact multiple of five, since the single-digit values are not zero-padded. Therefore, this loop

const int16_t len_xyz_char = sizeof(xyz_char)/sizeof(xyz_char[0]);

for (int i = 0; i < len_xyz_char; i++) {
     byteval[i] = pgm_read_word(xyz_char + i); 


    tft.setRotation(1);  // portrait
    drawArrayJpeg(byteval, sizeof(GAUGE), 0, 0); // Draw a jpeg image stored in memory


}

calls drawArrayJpeg 14516 times; every time after tacking on a single byte to

uint8_t byteval[] PROGMEM={};


uint32_t icount = 0;

the zero-length array byteval. Coincidentally, it is followed by another global variable that is not used, and these are the last two defined in the sketch. The loop is clobbering whatever is in memory after byteval, and it's just luck that nothing there matters (apparently).

(BTW, pgm_read_word reads a word, aka short, which is two bytes. But when writing, only the lower-end byte is written. And speaking of two bytes, why is len_xyz_char limited to 32K as a not-unsigned int16_t? )

Why is it received as char? ESP-Now receives data as uint8_t

typedef void (*esp_now_recv_cb_t)(
  const esp_now_recv_info_t *esp_now_info,
  const uint8_t *data,
  int data_len)

PROGMEM is not a "kind of array". PROGMEM does have a use with the ancient Arduino Uno R3, though, if you happen to have one.

Hi Ken,
First of all, thank you very much for taking notice of my problem and starting to give me advice!

There's no need for PROGMEM on ESP32. It has no effect -- that word is translated into nothing; it disappears.:
Yes, I agree with you, because I actually tested the speed and volume result with Wroom, PROGMEM or not, it gives the same result.

(BTW, pgm_read_word reads a word, aka short, which is two bytes. But when writing, only the lower-end byte is written. And speaking of two bytes, why is len_xyz_char limited to 32K as a not-unsigned int16_t? )

I see my mistake here too. Which of the two options below would be better for my case?

const size_t len_xyz_char = sizeof(xyz_char)/sizeof(xyz_char[0]);

or

#define ELEMENTS(xyz_char) (sizeof(xyz_char) / sizeof(xyz_char[0]))

for (int i = 0; i < ELEMENTS(xyz_char); i++) {
??

calls drawArrayJpeg 14516 times; every time after tacking on a single byte to
uint8_t byteval[] PROGMEM={};

Here I am converting all the characters from the xyz_char ARRAY bytes and then I am putting them together in a Byte Array[] and then I am trying to integrate this same Byte (uint8_t)Array into "drawArrayJpeg".

The main problem is that with MEMCPY I can convert a Char [] into a Byte[] only if the size of the CHAR [] does not exceed 304 bytes, or 152 characters. Also the conversion is in bytes between 48 and 120. I suppose that I must then convert these values ​​in some way into 0xFF,0xD8,0xE0...... in HEX bytes always accompanied by their 0x + ,

I suppose that I must find another way to convert the Char [] into a Byte[].

Why I work with Char ARRAYs and not with the Byte[], which come from the ESP32CAM. First, the JPG BYTE ARRAY has about 3023 elements. This amount cannot be transferred via ESP-NOW, at least I couldn't manage it so far.

Then, I would have to split the "fb->bf" that is output from ESP32CAM into 11 parts and send them one by one -

When they arrive in Wroom I would have to take them over again. This is the main reason why I work with Char ARRAys[] and not with Byte ARR[].

Besides, the bytes via WiFi arrive in DEC numbers of 216,255,217.......which is not what the Draw JPG library is expecting. She understand only 0xD8,0xFF,0xD9……

Anyway, this is not about solving another problem, but rather,

how to pass the entire Char ARRA[] of the JPG image, which is the result of the sum of the 11 x CHUNKS to a UIN8_T[] array without losing the 0x prefix characters and also the comma,

Only in this way can the JPG printing library print the image on the TFT screen.

Anyway, many thanks to Ken, who discovered the problem with the Bytes that I was reading before, which were only bytes and not an array of bytes. Also, I have found out that the limitation of reading the elements of the Char Array should not be limited with an int16_t i, but by another way, which according to me is "const size_t"

About what I mentioned that I work with PROGMEM array, please excuse me, it is not an array type, but rather it is just an order to the micro so that it knows that it should save everything in its Flash memory. Anyway, I have also found out that ESP32 does not use this PROGMEM command, presumably because of the large RAM it has.

The problem is still there, the TFT screen is black.

Here is my last sketch which needs more corrections:

/////////////////////////////////////////////////////////////////
#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>
TFT_eSPI tft = TFT_eSPI();

#include <JPEGDecoder.h>
#define minimum(a,b) (((a) < (b)) ? (a) : (b))

//CHAR PROGMEM ARRAY
unsigned char xyz_char[]=
{"0xFF,0xD8,0xFF,0xE0,0x0,0x10,0x4A,0x46,0x49,0x46,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,0xDB,0x0,0x43,0x0,0x3F,0x2B,0x2F,0x37,0x2F,0x27,0x3F,0x37,0x33,0x37,0x47,0x43,0x3F,0x4B,0x5F,0x9E,0x66,0x5F,0x57,0x57,0x5F,0xC1,0x8A,0x92,0x72,0x9E,0xE4,0xC9,0xF0,0xEC,0xE0,0xC9,0xDD,0xD9,0xFC,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xD9,0xDD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF4,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDB,0x0,0x43,0x1,0x43,0x47,0x47,0x5F,0x53,0x5F,0xB9,0x66,0x66,0xB9,0xFF,0xFF,0xDD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC4,0x0,0x1F,0x0,0x0,0x1,0x5,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xFF,0xC4,0x0,0xB5,0x10,0x0,0x2,0x1,0x3,0x3,0x2,0x4,0x3,0x5,0x5,0x4,0x4,0x0,0x0,0x1,0x7D,0x1,0x2,0x3,0x0,0x4,0x11,0x5,0x12,0x21,0x31,0x41,0x6,0x13,0x51,0x61,0x7,0x22,0x71,0x14,0x32,0x81,0x91,0xA1,0x8,0x23,0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,0x33,0x62,0x72,0x82,0x9,0xA,0x16,0x17,0x18,0x19,0x1A,0x25,0x26,0x27,0x28,0x29,0x2A,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFF,0xC4,0x0,0x1F,0x1,0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xFF,0xC4,0x0,0xB5,0x11,0x0,0x2,0x1,0x2,0x4,0x4,0x3,0x4,0x7,0x5,0x4,0x4,0x0,0x1,0x2,0x77,0x0,0x1,0x2,0x3,0x11,0x4,0x5,0x21,0x31,0x6,0x12,0x41,0x51,0x7,0x61,0x71,0x13,0x22,0x32,0x81,0x8,0x14,0x42,0x91,0xA1,0xB1,0xC1,0x9,0x23,0x33,0x52,0xF0,0x15,0x62,0x72,0xD1,0xA,0x16,0x24,0x34,0xE1,0x25,0xF1,0x17,0x18,0x19,0x1A,0x26,0x27,0x28,0x29,0x2A,0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFF,0xC0,0x0,0x11,0x8,0x0,0xF0,0x1,0x40,0x3,0x1,0x21,0x0,0x2,0x11,0x1,0x3,0x11,0x1,0xFF,0xDA,0x0,0xC,0x3,0x1,0x0,0x2,0x11,0x3,0x11,0x0,0x3F,0x0,0xBF,0x45,0x59,0xCE,0x32,0x73,0x88,0xE9,0x83,0xEE,0x8A,0x45,0x12,0xB7,0x6A,0x64,0x7F,0x79,0x8D,0x0,0x49,0x45,0x2,0x1B,0x48,0x28,0x18,0x1A,0x28,0x18,0xD3,0x45,0x0,0x35,0xA3,0xD,0xD6,0xAB,0xBC,0x45,0x69,0xC,0x8E,0xA4,0x8E,0x62,0x9D,0x79,0x14,0xC,0x9D,0x58,0x30,0xCA,0x9A,0x75,0x2,0xA,0x4A,0x0,0x29,0x28,0x0,0xA6,0xD0,0x4,0x33,0x1E,0x6A,0xA,0xA,0x15,0x8E,0x16,0x93,0x1C,0x64,0xD3,0x1,0x33,0x4C,0xA4,0x50,0xA7,0xA5,0x25,0x20,0x16,0x83,0x40,0xD,0xA2,0x80,0x12,0x8A,0x0,0xDC,0x5A,0x75,0x59,0x81,0x4,0xDC,0xC8,0xAB,0x4F,0x5E,0xB4,0x86,0x2B,0x1C,0x64,0xFA,0x52,0x44,0x31,0x18,0xA0,0x9,0x29,0x28,0x10,0xDA,0x4A,0x6,0x14,0x94,0xC,0x29,0x29,0x0,0x51,0x40,0xC8,0xDE,0x10,0xDD,0x38,0x35,0x5D,0x90,0xA9,0xE6,0x81,0x8D,0x4,0xA9,0xC8,0xE0,0xD4,0xF1,0xCE,0x1B,0x87,0xE0,0xD0,0x4,0xD4,0x94,0x8,0x5A,0x6D,0x0,0x25,0x25,0x3,0x20,0x9F,0xA8,0xA8,0x45,0x3,0x1C,0x6,0x5B,0xD8,0x53,0x5C,0xD3,0x1,0xB4,0xE,0xB5,0x23,0x10,0xD0,0x28,0x18,0xB4,0xD3,0x40,0x9,0x45,0x0,0x14,0x94,0x1,0xBB,0x45,0x51,0x81,0x2,0xFC,0xD2,0x93,0x52,0xAF,0x7A,0x6,0x31,0xFA,0x63,0xFB,0xC6,0xA5,0xA0,0x2,0x92,0x80,0x19,0xBB,0xF2,0xA5,0xA0,0x60,0x69,0x29,0x0,0x94,0x50,0x31,0x68,0xA0,0x2,0x9B,0x8C,0xAF,0xCD,0x40,0x10,0x3C,0x1F,0xDD,0xE6,0xA1,0xC5,0x3,0x1F,0x1C,0xAC,0x9E,0xE3,0xD2,0xAC,0x23,0xAB,0xF4,0xFC,0xA8,0x1,0x69,0x28,0x10,0x86,0x92,0x81,0x95,0xAE,0x3E,0xFD,0x34,0x52,0x18,0xBF,0x75,0x71,0xDE,0xA2,0xAA,0x0,0xA2,0xA4,0xA1,0xD,0x2,0x80,0x16,0x9A,0x68,0x1,0x28,0xA0,0x4,0xA2,0x80,0x37,0x39,0xA4,0x63,0xB5,0x49,0xAA,0x30,0x22,0x88,0x60,0x66,0xA6,0x1F,0x76,0x81,0x91,0x8E,0x67,0xFA,0xA,0x9A,0x80,0x12,0x9A,0x68,0x1,0x9B,0x69,0x40,0xC5,0x22,0x82,0x96,0x98,0x86,0xD2,0xD2,0x18,0x51,0x40,0x5,0x14,0x0,0x94,0xD6,0x45,0x7E,0xBF,0x9D,0x0,0x57,0x78,0x4A,0xD4,0x5D,0xF,0xBD,0x5,0x13,0x25,0xC7,0x69,0x3F,0x3A,0x9B,0xB6,0x68,0x24,0x4A,0x4A,0x6,0x53,0x7E,0x58,0x9A,0xE,0x36,0xD0,0x30,0x62,0xD,0x47,0x40,0xC5,0x1D,0x28,0xA4,0x31,0x29,0x28,0x1,0xD4,0xD3,0x40,0x9,0x49,0x40,0x5,0x14,0x1,0xBD,0x50,0xDC,0x1F,0x97,0x1E,0xB4,0x12,0x28,0xFB,0xB5,0x25,0x32,0x48,0xE2,0xE7,0x2D,0xEB,0x52,0xD2,0x29,0x9,0x48,0x7A,0xD3,0x24,0x4A,0x4A,0x62,0xA,0x29,0xC,0x4A,0x28,0x0,0xEF,0x41,0xA0,0x0,0x52,0xD0,0x2,0x52,0x50,0x1,0x51,0xBC,0xA,0xDD,0x38,0xA0,0xA,0xCE,0x85,0x7A,0xD2,0x2B,0xB4,0x7F,0x77,0xF2,0xA0,0xA2,0x74,0x95,0x5F,0xD8,0xFA,0x50,0xE7,0x8,0x68,0x11,0x50,0x53,0xFF,0x0,0x82,0x81,0x90,0xD2,0x52,0x28,0x7F,0x6A,0x4A,0x0,0x29,0x28,0x10,0x52,0x50,0x31,0x28,0xA0,0x2,0x92,0x80,0x37,0xAA,0xBC,0xBF,0x34,0xC3,0xDA,0x82,0x59,0x2E,0x33,0x44,0xA7,0x8,0x69,0x92,0x2A,0xD,0xA8,0x5,0x3A,0x91,0x62,0x51,0x4C,0x91,0xB4,0x94,0x8,0x29,0x33,0x40,0xB,0x45,0x0,0x14,0x50,0x1,0x49,0x40,0x5,0x14,0x0,0x94,0x50,0x3,0x4F,0x3C,0x1E,0x95,0x4,0x96,0xFF,0x0,0xDD,0x34,0x86,0x57,0x61,0x8A,0x53,0x2B,0x15,0xDA,0x79,0xA6,0x31,0xA2,0xA4,0x14,0x80,0x8E,0x50,0x1,0xE2,0xA3,0xA0,0x63,0x85,0x14,0xC,0x4A,0x5A,0x4,0x25,0x36,0x81,0x85,0x14,0x0,0x94,0x50,0x6,0xF5,0x57,0x41,0x92,0xED,0xEF,0x4C,0x86,0x4B,0x1F,0xDD,0xCD,0x32,0x4E,0x59,0x56,0x80,0x26,0xA2,0x91,0x42,0x52,0x53,0x24,0x4A,0x28,0x10,0x94,0x94,0x0,0xB4,0x50,0x2,0xD2,0x50,0x3,0x49,0x21,0xC7,0x1C,0x52,0x8A,0x6,0x2D,0x25,0x2,0xA,0x43,0x40,0x9,0x49,0x40,0x11,0xBA,0x87,0xEB,0x55,0x1C,0x61,0xCE,0x3A,0x52,0x28,0x65,0x4A,0x28,0x19,0x1B,0x9C,0xB5,0x34,0x8A,0x6,0x25,0x2D,0x0,0x2D,0x14,0x8,0x4A,0x6D,0x3,0xA,0x4A,0x0,0x28,0xA0,0xD,0xB9,0x4E,0x23,0x35,0x14,0x5C,0x2D,0x32,0x19,0x37,0x41,0x4C,0x5F,0x9A,0x62,0x7D,0x28,0xE,0xA4,0xB4,0x52,0x29,0x89,0x4D,0x34,0xC8,0xA,0x28,0x0,0xA4,0xC5,0x0,0x14,0xB4,0x0,0xB4,0x50,0x31,0xD,0x25,0x2,0xA,0x28,0x1,0xB4,0x50,0x1,0x4D,0xA0,0x6,0x31,0xC5,0x53,0x7F,0xBD,0x48,0xA0,0x2,0x9D,0xD1,0x68,0x2,0x2A,0x75,0x3,0x23,0xA2,0x81,0x8B,0x4B,0x40,0x9,0x49,0x40,0x9,0x49,0x40,0x5,0x14,0x1,0xAF,0x70,0x78,0xB,0x4A,0x9D,0x69,0x90,0x3D,0xCE,0x1,0xA6,0xC0,0x3E,0x4C,0xFA,0xD0,0x3E,0xA4,0xB4,0x52,0x18,0xDA,0x29,0x90,0x14,0x9D,0xE8,0x0,0xA2,0x80,0x12,0x8A,0x0,0x5A,0x5A,0x6,0x36,0x8A,0x42,0xA,0x29,0x80,0x94,0x86,0x80,0xA,0x6D,0x0,0x31,0xFE,0xE9,0xAA,0x54,0x8A,0x1E,0x29,0x24,0x3D,0xA8,0x1,0x82,0x9D,0x40,0xC6,0x35,0x32,0x81,0x8B,0x4B,0x9A,0x0,0x4A,0x4A,0x0,0x29,0x28,0x0,0xA2,0x80,0x35,0x25,0x39,0x9B,0xE9,0x52,0x42,0x39,0x26,0x99,0x3,0x65,0x3C,0x7D,0x6A,0x70,0x30,0x31,0x48,0x68,0x5A,0x28,0x18,0x94,0x94,0xC8,0x16,0x92,0x81,0x89,0x45,0x2,0xA,0x41,0x40,0xB,0x4B,0x40,0xC4,0xEF,0x4B,0x40,0x9,0x49,0x48,0x4,0xA4,0xA0,0x41,0x4D,0x34,0xC,0x86,0xE0,0xE1,0x2A,0xB0,0xEB,0x40,0xC9,0x5,0x44,0xFC,0xB5,0x0,0x2,0x9D,0x40,0xC,0x7A,0x65,0x5,0x9,0x45,0x0,0x14,0x50,0x2,0x51,0x40,0x5,0x14,0x1,0xA3,0xDE,0xAC,0xC7,0xFE,0xAF,0x3E,0xB4,0xC8,0x23,0xEB,0x2A,0x8A,0xB1,0x48,0x68,0x28,0xA0,0x18,0xDA,0x33,0xCD,0x32,0x42,0x8A,0x0,0x29,0x28,0x0,0xA2,0x81,0x85,0x2D,0x0,0x34,0x52,0xD2,0x1,0x29,0x28,0x10,0xDC,0xD2,0x8E,0x68,0x18,0x53,0x68,0x2,0xBD,0xD7,0x5A,0x85,0x68,0x19,0x27,0x45,0xAA,0xF4,0x1,0x20,0xA5,0xA0,0x64,0x46,0x9B,0x40,0xC4,0xA2,0x80,0xA,0x28,0x1,0x28,0xA0,0x2,0x8A,0x0,0xD1,0xC5,0x59,0x63,0x8C,0x2D,0x4,0x8D,0x8B,0x97,0x63,0x53,0x50,0x34,0x14,0x94,0x9,0x89,0x49,0x4C,0x91,0x68,0xA0,0x8,0xA5,0x66,0x5F,0xBA,0x2A,0x41,0xC8,0xA0,0x62,0xD2,0x52,0x0,0xA2,0x80,0xA,0x5A,0x0,0x6D,0x6,0x80,0x1B,0x45,0x0,0x14,0x94,0x8,0xA5,0x39,0xCB,0xD0,0xB4,0x14,0x12,0xFD,0xDC,0x54,0x43,0xAD,0x0,0x49,0x48,0x7A,0x50,0x32,0x3A,0x6D,0x3,0xA,0x4A,0x0,0x28,0xA0,0x2,0x92,0x80,0xA,0x28,0x3,0x56,0x3E,0x64,0x14,0x3B,0x7C,0xED,0x41,0x24,0xB0,0x8F,0x92,0xA4,0xA0,0x61,0x49,0x4C,0x42,0x51,0x41,0x21,0x45,0x0,0x14,0x52,0x18,0x52,0x1C,0x53,0x0,0x2,0x83,0x48,0x2,0x96,0x80,0x12,0x92,0x80,0x1B,0x45,0x0,0x14,0xD3,0xD2,0x80,0x28,0x9E,0x69,0xEB,0x40,0xC7,0xD2,0x6C,0x5F,0x4A,0x0,0x4D,0x94,0xC6,0x56,0xA0,0x64,0x64,0x11,0xDA,0x9B,0x40,0xC5,0xA4,0x6A,0x0,0x6D,0x14,0x0,0x52,0x50,0x1,0x45,0x0,0x6B,0xC7,0xC6,0xF6,0xF4,0xA8,0x7F,0x99,0xA6,0x41,0x71,0x78,0x14,0xB4,0x86,0x25,0x14,0xC4,0x36,0x96,0x81,0x9,0x4B,0x40,0x9,0x46,0x68,0x0,0xA2,0x90,0xC5,0xA4,0xA0,0x3,0x34,0xB4,0x0,0x94,0x50,0x3,0x68,0xA0,0x6,0xD4,0x73,0x9C,0x46,0x68,0x2,0xA5,0x4A,0xB4,0xC,0x5A,0x28,0x0,0xA2,0x80,0x12,0x9A,0x68,0x1,0xBB,0x45,0x2D,0x0,0x37,0x9,0xDD,0x69,0x3C,0xB4,0xEC,0xD4,0x0,0xD6,0x4D,0xA3,0x35,0x1D,0x5,0x5,0x14,0x1,0xAA,0xDF,0x2D,0xBF,0xD6,0x99,0x1F,0x32,0xA,0x64,0x16,0xE9,0x28,0x0,0xA4,0x34,0xC4,0x25,0x2D,0x20,0x12,0x8A,0x0,0x5A,0x4A,0x0,0x29,0x69,0xC,0x4A,0x4A,0x0,0x29,0x68,0x1,0x28,0xA0,0x4,0xA2,0x80,0x12,0xAB,0xDC,0x9E,0xD4,0x1,0x2,0xD4,0xA2,0x81,0x85,0x14,0x0,0x51,0x40,0x9,0x49,0x40,0x9,0x49,0x40,0x9,0x49,0x40,0xC,0x7A,0x8E,0x82,0x82,0x96,0x80,0x34,0xEE,0xF,0xCC,0xAB,0xE9,0x4B,0x6C,0x3A,0x9A,0x64,0x13,0xD1,0x40,0x84,0xA4,0xA6,0x1,0x45,0x20,0xA,0x28,0x0,0xA2,0x80,0xA,0x29,0xC,0x29,0x28,0x1,0x69,0x28,0x1,0x29,0x68,0x1,0x3A,0xD2,0x74,0xE2,0x80,0xA,0xA9,0x39,0xF9,0xE8,0x1,0x89,0x52,0x50,0x30,0xA2,0x80,0xA,0x28,0x1,0x29,0x28,0x1,0x29,0x28,0x1,0xB4,0x50,0x4,0x2C,0x77,0x1A,0x4A,0xA,0x12,0x96,0x80,0x34,0x24,0x39,0x76,0xAB,0x10,0xC,0x47,0x4C,0xCC,0x92,0x92,0x98,0x84,0xA2,0x90,0xC2,0x8A,0x0,0x4A,0x5A,0x0,0x4A,0x5A,0x0,0x28,0x14,0x86,0x14,0x94,0x0,0x51,0x40,0x9,0x4B,0x40,0x9,0x49,0x40,0x9,0x54,0x5D,0xB2,0x49,0xA0,0x63,0x92,0x9F,0x40,0xB,0x49,0x40,0x5,0x14,0x0,0xDA,0x4A,0x0,0x4A,0x4A,0x0,0x2A,0x37,0x6E,0xD4,0xC,0x65,0x25,0x3,0x12,0x96,0x80,0x2F,0x55,0xC1,0xD2,0xA8,0xCC,0x5A,0x4A,0x4,0x25,0x14,0x86,0x2D,0x25,0x0,0x14,0x50,0x1,0x45,0x21,0x85,0x14,0x0,0x51,0x40,0x5,0x25,0x0,0x14,0x50,0x0,0x69,0xB4,0x0,0xC9,0xE,0x10,0xD5,0x3A,0x6,0x4A,0x29,0x68,0x1,0x69,0x28,0x0,0xA4,0xA0,0x4,0xA4,0xA0,0x4,0xA4,0xA0,0x6,0xB3,0x6D,0xA8,0x68,0x28,0x75,0x25,0x0,0x25,0x25,0x0,0x69,0x27,0x32,0x55,0x81,0x4C,0xCC,0x5A,0x4A,0x62,0xA,0x29,0xC,0x29,0x28,0x0,0xA2,0x81,0x8B,0x49,0x48,0x5,0xA2,0x80,0xA,0x28,0x1,0x28,0xA0,0x2,0x8A,0x0,0x43,0x49,0x40,0x10,0x5C,0x1F,0x96,0xAB,0x8A,0x6,0x4C,0x28,0xA0,0x2,0x8A,0x0,0x29,0x28,0x1,0x29,0x28,0x1,0x29,0xF,0x1C,0xD0,0x4,0x4,0xE6,0x81,0x41,0x42,0xD2,0x50,0x2,0x52,0x50,0x6,0x9C,0x1D,0xCD,0x4F,0x54,0x66,0x25,0x14,0x0,0x51,0x48,0x2,0x92,0x80,0xA,0x5A,0x6,0x14,0x52,0x0,0xA2,0x80,0xA,0x28,0x0,0xA4,0xA0,0x2,0x8A,0x0,0x29,0xB4,0x1,0x5A,0xE0,0xFC,0xF8,0xA8,0xD6,0x81,0x92,0xD1,0x40,0x5,0x14,0x0,0x94,0x50,0x3,0x69,0x28,0x1,0x2A,0x17,0x3C,0xD0,0x31,0xB4,0xEA,0x6,0x25,0x25,0x0,0x14,0x50,0x6,0xA4,0x43,0xB,0x4F,0xA6,0x66,0x25,0x14,0xC0,0x29,0x69,0x0,0x52,0x50,0x30,0xA5,0xA0,0x2,0x8A,0x0,0x28,0xA4,0x1,0x45,0x0,0x14,0x50,0x2,0x51,0x40,0x5,0x25,0x0,0x52,0x90,0xE5,0xCD,0x2A,0x50,0x32,0x4A,0x28,0x0,0xA4,0xA0,0x2,0x92,0x80,0x12,0x92,0x80,0x23,0x67,0x1D,0x5,0x45,0x40,0xC2,0x96,0x81,0x89,0x45,0x2,0x12,0x8A,0x6,0x6B,0x8A,0x5A,0x66,0x63,0x68,0xA0,0x2,0x96,0x80,0x12,0x8A,0x6,0x14,0xB4,0x0,0x51,0x48,0x2,0x8A,0x0,0x28,0xA0,0x2,0x8A,0x0,0x4A,0x5A,0x0,0x4A,0x69,0xE9,0x40,0x14,0xBB,0xD4,0x8B,0x41,0x43,0xE8,0xA0,0x41,0x49,0x40,0x9,0x49,0x40,0x9,0x51,0xC8,0x33,0x40,0x11,0x52,0x50,0x50,0xB4,0xB4,0x0,0x94,0x50,0x2,0x51,0x40,0x1A,0xF4,0x53,0x32,0xA,0x4A,0x6,0x14,0x50,0x30,0xA4,0xA0,0x2,0x96,0x80,0xA,0x29,0x0,0x51,0x40,0x5,0x14,0x0,0x51,0x40,0x9,0x4B,0x40,0x9,0x51,0x4E,0x7F,0x77,0x40,0xCA,0xC3,0xAD,0x4C,0x28,0x1,0x69,0x8F,0xB8,0x73,0xDA,0x80,0x1B,0xE6,0x7A,0xD3,0xB2,0x28,0x1,0x69,0x28,0x1,0x29,0x28,0x2,0x37,0x5E,0xE2,0xA3,0xA0,0xA0,0xA2,0x80,0xA,0x4A,0x0,0x28,0xA0,0xD,0x6A,0x29,0x99,0x85,0x25,0x0,0x14,0x50,0x30,0xA2,0x80,0x12,0x96,0x90,0x5,0x14,0x0,0x51,0x9A,0x0,0x28,0xA0,0x2,0x8A,0x0,0x4A,0x5A,0x0,0x4A,0x82,0xE0,0xF2,0x28,0x19,0x12,0xD4,0xB4,0x0,0xB4,0x50,0x4,0x65,0x73,0x4C,0xC1,0x14,0x0,0x7,0xA7,0x66,0x80,0xA,0x4A,0x0,0x2A,0x36,0x1C,0xE6,0x81,0x8C,0xA4,0xA0,0x61,0x45,0x0,0x14,0x50,0x6,0xB5,0x14,0xCC,0x84,0xA4,0xA0,0x61,0x45,0x3,0xA,0x28,0x0,0xA2,0x90,0x5,0x14,0x0,0x52,0x32,0x86,0xEB,0x40,0xB,0x45,0x3,0xA,0x28,0x10,0x51,0x40,0xD,0xAA,0xF3,0x1F,0xDE,0x50,0x31,0x12,0xA4,0xA0,0x5,0xA4,0xA0,0x4,0xA4,0xA0,0x6,0x11,0x9A,0x67,0x4A,0x6,0x1B,0xA9,0xD9,0xA0,0x2,0x98,0xD4,0x0,0xDA,0x6D,0x3,0xA,0x28,0x0,0xA2,0x80,0x35,0x68,0xA6,0x64,0x25,0x14,0xC,0x4A,0x28,0x18,0x51,0x40,0x5,0x14,0x80,0x28,0xA0,0x5,0xA2,0x81,0x85,0x14,0x0,0x52,0x50,0x1,0x45,0x0,0x34,0xD5,0x46,0x39,0x6A,0x0,0x91,0x69,0xF4,0x0,0x52,0x50,0x1,0x49,0x40,0x9,0x4D,0xA0,0x6,0x91,0x4D,0xC1,0xA0,0x61,0x9A,0x43,0xD2,0x80,0x1B,0x49,0x40,0xC2,0x8A,0x0,0x28,0xA0,0xD,0x4A,0x4A,0x66,0x61,0x45,0x0,0x14,0x94,0xC,0x28,0xA0,0x2,0x96,0x90,0x9,0x4B,0x40,0xC2,0x8A,0x0,0x28,0xA0,0x2,0x92,0x80,0xA,0x28,0x2,0x39,0xE,0x16,0xAB,0xA,0x0,0x94,0x53,0xA8,0x0,0xA2,0x80,0x12,0x92,0x80,0x12,0x92,0x80,0x12,0x8A,0x6,0x34,0x8A,0x6E,0x28,0x1,0xB4,0x94,0xC,0x28,0xA0,0x2,0x92,0x80,0x35,0x29,0x29,0x99,0x85,0x14,0x0,0x94,0x50,0x30,0xA2,0x90,0x5,0x2D,0x0,0x14,0x50,0x30,0xA2,0x80,0xA,0x28,0x0,0xA2,0x80,0x1A,0xD,0x2D,0x0,0x43,0x39,0xE3,0x15,0xA,0xD0,0x32,0x61,0x4B,0x40,0x84,0xA2,0x80,0x12,0x8A,0x0,0x4A,0x4A,0x0,0x4A,0x28,0x1,0x29,0x28,0x18,0xC3,0x4D,0xA0,0x61,0x49,0x40,0x5,0x14,0x1,0xA1,0xE6,0x27,0xF7,0xA9,0x3C,0xC4,0xFE,0xF5,0x33,0x30,0xF3,0x13,0xFB,0xC2,0x8F,0x31,0x3F,0xBC,0x28,0x1,0x77,0xAF,0xF7,0x85,0x2E,0xE5,0xFE,0xF0,0xA0,0x61,0x91,0xEA,0x28,0xFC,0x69,0x0,0x52,0xD0,0x2,0x51,0x9A,0x0,0x5A,0x28,0x0,0xA2,0x80,0xA,0x28,0x18,0x52,0x50,0x5,0x69,0xF,0xCD,0x48,0xB4,0xC,0x90,0x52,0xD0,0x20,0xA4,0xA0,0x2,0x92,0x80,0x12,0x92,0x81,0x85,0x25,0x0,0x14,0x94,0x0,0x86,0x99,0x40,0xC4,0xA2,0x80,0x12,0x8A,0x0,0xB3,0xF2,0xFA,0xD1,0xF2,0xFF,0x0,0x7A,0x99,0x1,0xF2,0xFF,0x0,0x7A,0x93,0xE5,0xF5,0xA0,0x62,0xFC,0xBE,0xB4,0x7C,0x9E,0xB4,0x0,0x7C,0x9E,0xB4,0x7C,0x9F,0xDE,0x14,0x80,0x4C,0x27,0xF7,0xA9,0x70,0x9F,0xDE,0xA6,0x1,0xF2,0x7A,0x8A,0x4F,0x93,0xFB,0xC2,0x80,0x17,0xE4,0xFE,0xF5,0x1F,0x27,0xF7,0xA9,0x0,0x7C,0x9F,0xDE,0xA3,0xE4,0xFE,0xFD,0x0,0x1F,0x27,0xFC,0xF4,0xA3,0x2B,0xFD,0xFA,0x0,0x32,0xBF,0xDE,0x34,0x9B,0x87,0xF7,0x8D,0x3,0x1A,0x71,0xEB,0x48,0xD,0x0,0x48,0xD,0x2D,0x0,0x14,0x50,0x20,0xA4,0xA0,0x4,0xA2,0x81,0x85,0x25,0x0,0x25,0x14,0x0,0x94,0xD3,0x40,0xD,0xA2,0x81,0x85,0x25,0x0,0x7F,0xFF,0xD9"};

uint32_t icount = 0;

void setup()
{

Serial.begin(115200);
tft.begin();
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);

  const size_t len_xyz_char = sizeof(xyz_char)/sizeof(xyz_char[0]);
   //unsigned char byteval;
    uint8_t dest[len_xyz_char]={};
    memset(dest, 0, sizeof(dest));

char myChars[] =
{ "0xFF,0xD8,0xFF,0xE0,0xFF,0xD9,0xFF,0xD8,0xFF,0xE0,0xFF,0xD9,0xFF,0xD8,0xFF,0xE0,0xFF,0xD9,0xD9,0xD9,0xD9,0xD9,0xD9,0xD9,0xD9,0xD9,0xD9,0xD9,0xD9,0xD9,A" };
int8_t buffer[]={}; // defaults to all 0's

const size_t len_myChars = sizeof(myChars)/sizeof(myChars[0]);

memcpy( (void *)( buffer ), (void *) myChars, len_myChars );

Serial.println( );

for ( const size_t i = 0; i < len_myChars; i++ )
{
//byteval = pgm_read_word(xyz_char + i);
//Serial.print((char)byteval);//it,s OK so
//Serial.print(buffer[i],HEX);//it,s OK so

Serial.print( myChars[i] );
Serial.print(" converts to: ");
Serial.print( buffer[i] );
Serial.println( );

dest[i]=buffer[i];



tft.setRotation(1);  // portrait

// drawArrayJpeg(dest, sizeof(GAUGE), 0, 0); // Draw a jpeg image stored in memory

}

Serial.println( );
Serial.println("len_myChars: ");
Serial.println(len_myChars);//152 characters
Serial.println("Number bytes: ");
Serial.println(len_myChars *2);//304 bytes

}

void loop() {}

This is a fundamental misunderstanding of how data is presented and represented. Try this

const uint8_t data[][2] = {
  { 0xFF, 0xD8 },
  { 255, 216 },
  { 0xFF, 216 },
  { 255, 0xD8 },
  { 0b11111111, 0b11011000 },
};

void setup() {
  Serial.begin(115200);

  for (size_t i = 0; i < sizeof(data) / 2; i++) {
    Serial.print(data[i][0], HEX);
    Serial.print(' ');
    Serial.println(data[i][1], HEX);
  }
}

void loop() {}

The first two bytes of any JPEG comprise the SOI or Start of Image: 0xFF 0xD8; which as seen in the sketch above are decimal values 255 216. If you hover over the definition of xyz_char in the IDE, a popup should show that instead you have

variable xyz_char
Type: unsigned char[14516]
Value = {48, 120, 70, 70, 44, 48, 120, 68, 56, 44, ...}
CHAR PROGMEM ARRAY

unsigned char xyz_char[] = {
    "0xFF,0xD8,0xFF,0xE0,0x0,0x10,0x4A,0x46,0x49,0x46,0x0,0x1,0x1,0x1,0x0,0x0,"
    "0x0,0x0,0x0,0x0,0xFF,0xDB,0x0,0x43,0x0,0x3F,0x2B,0x2F,0x37,0x2F,0x27,0x3F,"

which starts with 48 120. Not a JPEG, but instead the ASCII codes for 0 and x -- the first two characters of the string. Same for myChars in setup.

Hi Ken, may be I can,t express myself well, as the english is my third language....
I have checked your proposal code and even I knew whatr will be the result:
FF D8
FF D8
FF D8
FF D8
FF D8

I know that if we put Serial.print(xxx,HEX), yes or yes we will see, only see on the serial monitor the result in ASCII code. My target is not to see with my eyes the ASCII code on the serial monitor, I wish to apply the Serial.print(data) directly in the JPG library. Actually the above your example is giving binary code and ever the binary code is taking the important protagonism in the communication and it is other topic whether we wish to see this binary code into DEC,HEX or BIN. Let me try to express myself better with my example:

Here you have example of DRAW JPG on TFT with eSPI library:
///////////////////////// Display JPG ///////////////////////////
#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>
TFT_eSPI tft = TFT_eSPI();

#include <JPEGDecoder.h>
//Return the minimum of two values a and b
#define minimum(a,b) (((a) < (b)) ? (a) : (b))

unsigned char GAUGE[] PROGMEM = {

0xFF,0xD8,0xFF,0xE0,

0x0,0x10,0x4A,0x46,0x49,0x46................"}// char array from above

uint32_t icount = 0;

//####################################################################################################
// Draw a JPEG on the TFT pulled from a program memory array
//####################################################################################################
void drawArrayJpeg(const uint8_t arrayname[], uint32_t array_size, int xpos, int ypos) {

int x = xpos;
int y = ypos;

JpegDec.decodeArray(arrayname, array_size);

jpegInfo(); // Print information from the JPEG file (could comment this line out)

renderJPEG(x, y);

Serial.println("#########################");
}//void drawArrayJpeg(const uint8_t arrayname[], uint32_t array_size, int xpos, int ypos)

//####################################################################################################
// Draw a JPEG on the TFT, images will be cropped on the right/bottom sides if they do not fit
//####################################################################################################
// This function assumes xpos,ypos is a valid screen coordinate. For convenience images that do not
// fit totally on the screen are cropped to the nearest MCU size and may leave right/bottom borders.
void renderJPEG(int xpos, int ypos) {

// retrieve infomration about the image
uint16_t *pImg;
uint16_t mcu_w = JpegDec.MCUWidth;
uint16_t mcu_h = JpegDec.MCUHeight;
uint32_t max_x = JpegDec.width;
uint32_t max_y = JpegDec.height;

// Jpeg images are draw as a set of image block (tiles) called Minimum Coding Units (MCUs)
// Typically these MCUs are 16x16 pixel blocks
// Determine the width and height of the right and bottom edge image blocks
uint32_t min_w = minimum(mcu_w, max_x % mcu_w);
uint32_t min_h = minimum(mcu_h, max_y % mcu_h);

// save the current image block size
uint32_t win_w = mcu_w;
uint32_t win_h = mcu_h;

// record the current time so we can measure how long it takes to draw an image
uint32_t drawTime = millis();

// save the coordinate of the right and bottom edges to assist image cropping
// to the screen size
max_x += xpos;
max_y += ypos;

// read each MCU block until there are no more
while (JpegDec.read()) {

// save a pointer to the image block
pImg = JpegDec.pImage ;

// calculate where the image block should be drawn on the screen
int mcu_x = JpegDec.MCUx * mcu_w + xpos;  // Calculate coordinates of top left corner of current MCU
int mcu_y = JpegDec.MCUy * mcu_h + ypos;

// check if the image block size needs to be changed for the right edge
if (mcu_x + mcu_w <= max_x) win_w = mcu_w;
else win_w = min_w;

// check if the image block size needs to be changed for the bottom edge
if (mcu_y + mcu_h <= max_y) win_h = mcu_h;
else win_h = min_h;

// copy pixels into a contiguous block
if (win_w != mcu_w)
{
  uint16_t *cImg;
  int p = 0;
  cImg = pImg + win_w;
  for (int h = 1; h < win_h; h++)
  {
    p += mcu_w;
    for (int w = 0; w < win_w; w++)
    {
      *cImg = *(pImg + w + p);
      cImg++;
    }
  }
}

// calculate how many pixels must be drawn
uint32_t mcu_pixels = win_w * win_h;

tft.startWrite();

// draw image MCU block only if it will fit on the screen
if (( mcu_x + win_w ) <= tft.width() && ( mcu_y + win_h ) <= tft.height())
{

  // Now set a MCU bounding window on the TFT to push pixels into (x, y, x + width - 1, y + height - 1)
  tft.setAddrWindow(mcu_x, mcu_y, win_w, win_h);

  // Write all MCU pixels to the TFT window
  while (mcu_pixels--) {
    // Push each pixel to the TFT MCU area
    tft.pushColor(*pImg++);
  }

}
else if ( (mcu_y + win_h) >= tft.height()) JpegDec.abort(); // Image has run off bottom of screen so abort decoding

tft.endWrite();

}

// calculate how long it took to draw the image
drawTime = millis() - drawTime;

// print the results to the serial port
Serial.print(F( "Total render time was : ")); Serial.print(drawTime); Serial.println(F(" ms"));
Serial.println(F(""));
}//void renderJPEG(int xpos, int ypos)void renderJPEG(int xpos, int ypos)

//####################################################################################################
// Print image information to the serial port (optional)
//####################################################################################################
void jpegInfo() {
Serial.println(F("==============="));
Serial.println(F("JPEG image info"));
Serial.println(F("==============="));
Serial.print(F( "Width :")); Serial.println(JpegDec.width);
Serial.print(F( "Height :")); Serial.println(JpegDec.height);
Serial.print(F( "Components :")); Serial.println(JpegDec.comps);
Serial.print(F( "MCU / row :")); Serial.println(JpegDec.MCUSPerRow);
Serial.print(F( "MCU / col :")); Serial.println(JpegDec.MCUSPerCol);
Serial.print(F( "Scan type :")); Serial.println(JpegDec.scanType);
Serial.print(F( "MCU width :")); Serial.println(JpegDec.MCUWidth);
Serial.print(F( "MCU height :")); Serial.println(JpegDec.MCUHeight);
Serial.println(F("==============="));
}//void jpegInfo()void jpegInfo()void jpegInfo()void jpegInfo()

void setup()
{

Serial.begin(BAUD_RATE_SER);
tft.begin();
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);

// The image is 300 x 300 pixels so we do some sums to position image in the middle of the screen!
// Doing this by reading the image width and height from the jpeg info is left as an exercise!
int x = (tft.width() - 300) / 2 - 1;
int y = (tft.height() - 300) / 2 - 1;
tft.setRotation(1); // portrait
drawArrayJpeg(GAUGE, sizeof(GAUGE), 0, 0); // Draw a jpeg image stored in memory

}// SETUP() SETUP() SETUP() SETUP() SETUP() SETUP() SETUP() SETUP() SETUP()

void loop(){}

If you read the char array[] from above, with ASCII HEX values, with 0x + , , then the JPG will appeare in the TFT.
What happen now with the received same BYTE array[] from the ESP32 CAM, which is the exactly "FB->BUF". So this "FB->BUF" its coming with the same elements, but in its binary code, if I print these elements as HEX, I will see them as FF,D8,FF,E0...........FF,D9.
But actially these HEX codes are forsed to be HEX, they are not HEX coming from the ESP32CAM. If forexample I name some char receiving buffer to receive this "FB->BUF", this buffer, printed as Serial.print(buffer), without any BIN or HEX or DEC additional forsing, then this buffer will be printed as(I checked) , as DEC codes, 255,216,255,244.....255,217.
So, what happen now, if forexample I place the next operation, deactivating the GAUGE defined char array from above or better said, define it just empty;
Let us fill it from the scratch here;;;
for(I=0,i<sizeof(GAUGE),i++){
GAUGE[i]=buffer[i];
Serial.print(GAUGE[I];

                  int x = (tft.width()  - 300) / 2 - 1;
                  int y = (tft.height() - 300) / 2 - 1;
                  tft.setRotation(1);  // portrait
drawArrayJpeg(GAUGE, sizeof(GAUGE), 0, 0); 

}

What we will see now on the TFT ?---NOTHING
and why nothing, when the elements of this same char array are exactly same ?
My answer is, just because this GAUGE array must be appear as defined char array[] = { 0xFF,0xD8,0xFF,0xE0........0xFF,0xD9};
and when I fill this GAUGE char array as above operation, this same GAUGE array is filling itself with

char array[] = { 255,216,255,244........255,217};

Ofcourse I can,t see anything on the TFT.
So, did you understand what I am searching ?
The GAUGE array must appeare with its own HEX ASCII elements without putting HEX in the serial print function
So, printing with Serial.print(GAUGE) should appeare these ASCII values, such like 0xFF,0x216......
without forcing the Serial.print(GAUGE,HEX)
I can,t be more clear in my explanations.

Sorry, I ment the filled GAUGE array should be printed exactly by that:
Serial.print(GAUGE....without HEX) = 0xFF,0xD8,0xFF,0xE0....0xFF,0xD9
Should be found some manner to be obtained this result. Only then the JPG will appeare definitelly on the screen.
That was, what I tald before, the JPG library seems don,t understand that 255=0xFF and 216=0xD8.....
This library expect to fing only the ASCI code as 0xFF,0xD8..... any other interpretation of the ARRAY elements.

if it,s necessary, let me use the google translator. If nobody understand my english above and wish to help, I will pass my explanation through the google translator to help to be understood better my text.

Sorry, but you are a deeply wrong in it.
The library is not works with ASCII codes at all, it works with an array of ints, which are independent to the form of HEX, DEC or BIN. So the 216,255 and 0xD8,0xFF, are absolutely the same.
The reason of your image not shown in a TFT is something else.

The main problem with your messages, as I think, is not in your English, but is in the incorrect using of code tags when your discussing the code. For example, you message #9 is a mess of the text and code, that very difficult to read

Well, even though new problems appear, I'm still on the same topic I think - the appearance of a CAHR ARRAY in the TFT, using Bodmer's JPGDraw library, where this same char that brings the JPG image can be either UINT8_T or UNSIGNED CHAR so that it is recognized by the library.
I thank the forum members
Ken and b707 who have as much patience with me as I do. I think that the topic is interesting for other colleagues who work on similar topics. Also in the same topic other issues are being touched upon, which are related to the objective of this main topic, since the objective seems not to be so simple.
Let's continue.
I really admit that I was wrong that the library can only recognize bytes like 0xFF or unsigned chars 0xFF, in the end I tried the same uint8_t array that I had in DEC as 0xFF=255, 0xD8=216, 0xE0=225......
In the end the JPG image with the uint8_t array {255,216,255,224.............255,217} did open the image on the TFT screen.
Now the following problems continue, which I describe below.

At last I obtained the TFT image with uint8_t GAUGE[] ={255,216,255,224...................255,217}. So, now I don,t search the previous look as uint8_t GAUGE[] ={0xFF,0XD8,0xFF,0xE0...........0xFF,0xD9}.
Having in mind I have assembled the total array in char GAUGE[]={"0xFF,0XD8,0xFF,0xE0...........0xFF,0xD9"}, now I have to convert the above char array into uint8_t GAUGE[] ={255,216,255,224...................255,217}.
I have used the next algorithm:
So, converting char array to byte or uint8_t array is converting every character including the "0x" and the ',' as we can see here forexample:

void setup()
{

Serial.begin(115200);

unsigned char c[] PROGMEM={"1,A,FF,D8"};

uint8_t a[] PROGMEM={};

Serial.print("1,A: ");
for(int i=0;i<sizeof(c);i++)//
{
a[i] = c[i] & 0xFFFF;
Serial.print(a[i]);
Serial.print(",");
}
}
void loop() {}

So, I found an algorithm, which join each two characters into one byte, like forexample 'F' + 'F' = 0xFF
Here is the algorithm:
char msg_d[] PROGMEM = {"A1,A2,A3,A4,A5,A6,A7,A8,A9,10,11,12,13,14,15,AE"};
char msg_u[] PROGMEM = {"A,B,C,D,E,F,0,1,2,3,4,5,6,7,8,9"};
const size_t len_msg_d=sizeof(msg_d)/sizeof(msg_d[0]);
const size_t len_msg_u=sizeof(msg_u)/sizeof(msg_u[0]);
byte b_u[16]={};//4
byte b_d[16]={};

void setup()
{
int i;
int j;
char temp_u[len_msg_u];
char temp_d[len_msg_d];

Serial.begin(115200);

j = 0;

//////////////////////////////////// 1 character byte ///////////////////////////////////////////////

for (int i = 0; i < len_msg_u; i += 2)//step of reading
{
strncpy(temp_u, &msg_u[i], 1);// number of characters in 1 byte

// Convert hex string to numbers:
b_u[j] = (temp_u[0] <= '9') ? (temp_u[0] - '0') : (temp_u[0] - 'A' + 10);
b_u[j] *= 16;
b_u[j] += (temp_u[1] <= '9') ? (temp_u[1] - '0') : (temp_u[1] - 'A' +10);

     
     Serial.print(char(b_u[j]), HEX);
     Serial.print(",");

}//

Serial.println();
////////////////////////////////////////// 2 characters byte ///////////////////////////////////////
for (int i = 0; i < len_msg_d; i += 3)//step of reading
{
strncpy(temp_d, &msg_d[i], 2);// number of characters in 1 byte

// Convert hex string to numbers:
b_d[j] = (temp_d[0] <= '9') ? (temp_d[0] - '0') : (temp_d[0] - 'A' + 10);
b_d[j] *= 16;
b_d[j] += (temp_d[1] <= '9') ? (temp_d[1] - '0') : (temp_d[1] - 'A' +10);

    
     Serial.print(b_d[j], HEX);
     Serial.print(",");

     //Serial.print(char(msg[i]), HEX);

}//for (int i = 0; i < len_msg; i += 3)

}//setup

void loop() {}

Result:
70,80,90,A0,B0,C0,D0,E0,F0,0,10,20,30,40,50,60,
A1,A2,A3,A4,A5,A6,A7,A8,A9,10,11,12,13,14,15,AE,

As everyone cane see, here the char "FF" can be converted in 0xFF and ctra.....
The 'F' can be converted in 0xF (so so, because the values are appearing shifted and I don,t know why).
So, now appeare another problem;
The char array[] consists of characters for example "FF,D8,1,A.....". According to the above algorithm either a single character 'F' can be converted to byte or the character "FF" can be converted to byte, but when the char array[] consists of single characters 'F' and double characters "FF", then I am stuck how can an entire char array[] consisting of single and double characters as elements ---> be converted to bytes?
I have tried adding a character '0' in front of all single characters like '0'+'F', but in the end when I apply the above algorithm to convert the character to a byte, it turns out that the character 'F' and "0F" will always be an 'F', so when the FOR loop reads every second character, it will skip the elements that have only one character or rather it will join them with the second character to form a pair.
The problem is:
How can you convert a char array[] that has elements that are mixed like 'F' and "FF" without the final result being wrong?
I hope someone on the forum has some advice...
Regards, KH

What I mean is how to convert the char array[] = {"0xFF,0xD8,0x1,0xA,0xFF"} in
uint8_t array[] = {0xFF,0xD8,0x1,0xA,0xFF} or to uint8_t array[] = {255,216,1,10,255}

But why???

You just wrote that you understood that 0xff and 255 records are the same thing - and then you start talking about converting one to the other.

Just as a program that understands 0xff easily accepts 255 as input - the opposite is also true. Any program that accepts an array of integers in the form of decimal numbers - can also accept hex!

You should first understand that this is not a data format, but nothing more than a representation of the same numbers

Hi b707, I just discovered , that I can directly SUM uint8_t arrays, which is actually cutting huge of work. I will save all these convertings between char and bytes:

Here bellow is my example, how can be concatenate two byte arrays:

uint8_t Z1[] = {1,2,3,4,5};
uint8_t Z2[] = {6,7,8,9,10};

const size_t len_Z1=sizeof(Z1)/sizeof(Z1[0]);
const size_t len_Z2=sizeof(Z2)/sizeof(Z2[0]);
const size_t len_SUMA=len_Z1 + len_Z2;
uint8_t SUMA[len_SUMA]={};//

void setup()
{
Serial.begin(115200);

memcpy_P(SUMA, Z1, len_Z1);
memcpy_P(&SUMA[len_Z1], Z2, len_Z2);

   Serial.println();
   Serial.print("SUMA Z1+Z2:  ");

for (size_t i=0; i<len_SUMA; i++)
{
Serial.print(SUMA[i]);
Serial.print(',');
}
Serial.println();
Serial.print("Size Z1: ");
Serial.println(len_Z1);
Serial.print("Size Z2: ");
Serial.println(len_Z2);
Serial.print("Size SUMA: ");
Serial.println(len_SUMA);

}

void loop()
{
// Do nothing
}

Result:
SUMA Z1+Z2: 1,2,3,4,5,6,7,8,9,10,
Size Z1: 5
Size Z2: 5
Size SUMA: 10

I think by this way I can over the Image on the TFT, let me show my success when I reach there.
It was a pitty, why I can,t receive directly the 3023 characters of the "fb->buf" from the ESP32CAM to the ESP32 WROOM by ESP-NOW(WiFi). It should save a work and time for handleling of the big JPG byte array.
I can receive in the second ESP32 WROOM only parts of the Master coming array part by part ( 255 by 255 and so on until the 3023 total elements)
Do you have any idea, why I can,t receive the full entire uint8_t buffer from the Master ESP32CAM ?

uint8_t Z1[] = {1,2,3,4,5};
uint8_t Z2[] = {6,7,8,9,10};

const size_t len_Z1=sizeof(Z1)/sizeof(Z1[0]);
const size_t len_Z2=sizeof(Z2)/sizeof(Z2[0]);
const size_t len_SUMA=len_Z1 + len_Z2;
uint8_t SUMA[len_SUMA]={};//

void setup()
{
Serial.begin(115200);

memcpy_P(SUMA, Z1, len_Z1);
memcpy_P(&SUMA[len_Z1], Z2, len_Z2);

   Serial.println();
   Serial.print("SUMA Z1+Z2:  ");

for (size_t i=0; i<len_SUMA; i++)
{
Serial.print(SUMA[i]);
Serial.print(',');
}
Serial.println();
Serial.print("Size Z1: ");
Serial.println(len_Z1);
Serial.print("Size Z2: ");
Serial.println(len_Z2);
Serial.print("Size SUMA: ");
Serial.println(len_SUMA);

}

void loop()
{
// Do nothing
}

Easy way is to use the strtoul() function, which converts ASCII to an unsigned integer, and will work with decimal or hexidecimal numbers.

void setup()
{

  Serial.begin(115200);
  tft.begin();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);

  char* ptr = (char*)xyz_char;

  size_t jpgsize = 0;

  //all this does is determine how many bytes are needed for the jpg image
  while (*ptr) {
    if (*ptr == ',') {
      ptr++; //skip over commas
    } else {
      strtoul(ptr, &ptr, HEX);
      jpgsize++;
    }
  }
  Serial.print("\n\njpg size = ");
  Serial.println(jpgsize);
  
  uint8_t jpgtest[jpgsize];
  uint8_t* ptrJPG = jpgtest;

  ptr = (char*)xyz_char;

  //this converts the comma separated hexidecimal string into a uint8_t array
  while (*ptr) {
    if (*ptr == ',') {
      ptr++; //skip over commas
    } else {
      *ptrJPG = strtoul(ptr, &ptr, HEX);
      ptrJPG++;
    }
  }
  drawArrayJpeg(jpgtest, sizeof(jpgtest), 0, 0);

}

Hi David, thank you for your help!
Tommorow I will test it and will confirm how it is working in my place.
By the way, I am so glad by myself, that the algorithm of Concatenate of BYTE ARRAYs is working SHARPLY, ALELUYA, por fin he consiguido a asamblar los 12 byte arrays in 1 whole byte array, which placed in the TFT have showed the JPG image.
So, the work in the second ESP32 is resolved 100%, now let me test the code of David and see whether I can transffer the full JPG array at once to the second Wroom ESP.

Just I tested the code of David, which was related with converting char array into uint8_t array and the code works fine, may be just have to be integrated some array length by some way, because the start and the end of the array don,t appear, but it works fine in general.

unsigned char Z1[] ={"0xFF,0xD8,0xFF,0xE0,0x0,0x10,0x4A,0x46,0x49,0x46,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,0xDB,0x0,0x43,0x0,0x3F,0x2B,0x2F,0x37,0x2F,0x27,0x3F,0x37,0x33,0x37,0x47,0x43,0x3F,0x4B,0x5F,0x9E,0x66,0x5F,0x57,0x57,0x5F,0xC1,0x8A,0x92,0x72,0x9E,0xE4,0xC9,0xF0,0xEC,0xE0,0xC9,0xDD,0xD9,0xFC,0""};

//unsigned char Z1[] = {"FF,D8,FF,E0,0,10,4A,46,49,46,0,1,1,1,0,0,0,0"};

void setup()
{

Serial.begin(115200);

char* ptr = (char*)Z1;

size_t jpgsize = 0;

//all this does is determine how many bytes are needed for the jpg image
while (*ptr) {
if (*ptr == ',') {
ptr++; //skip over commas
} else {
strtoul(ptr, &ptr, HEX);
jpgsize++;

   Serial.print(ptr);
}

}
Serial.print("\n\njpg size = ");
Serial.println(jpgsize);

uint8_t jpgtest[jpgsize];
uint8_t* ptrJPG = jpgtest;
}

void loop(){}

Result:
Calculated checksum='254ebdb5'

Image checksum='fffff��,0xD8,0xFF,0xE0,0x0,0x10,0x4A,0x46,0x49,0x46,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,0xDB,0x0,0x43,0x0,0x3F,0x2B,0x2F,0x37,0x2F,0x27,0x3F,0x37,0x33,0x37,0x47,0x43,0x3F,0x4B,0x5F,0x9E,0x66,0x5F,0x57,0x57,0x5F,0xC1,0x8A,0x92,0x72,0x9E,0xE4,0xC9,0xF0,0xEC,0xE0,0xC9,0xDD,0xD9,0xFC,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xD9,0xDD,0x...................................

jpg size = 255

[/quote]

@kostan2865, you're 20 post into this thread and you still haven't learned how to post your code with Code Tags. Scan back through the thread. Do you see how the code that everyone else posted is nicely formatted while yours looks like crap? Please, before you make another post, do us all a favor and read: