Elegoo TFT - Showing personalized images without SD card

You have created a full-colour icon from a fairly nondescript JPG.
Yes, you need 30000 pixels. Your format requires 60000 byte array. The AVR compiler will not accept any array larger than 32768 bytes. (or it might be 32767)

You could split the large array into two. And use your function to display each half. Amend your function to read from Flash.

Think about it. You could have a monochrome image with sharp edges. Display with tft.drawBitmap()
Or use a 16-colour palette to produce anti-aliased curved edges. This needs a user function to display this BMP format.

I have used IrfanView to convert your JPG into BMP files of different resolution.
You can store the BMP file in Flash memory and display using the Colour Palette.

In an ideal world, Henning Karlsen's online ImageConverter (Mono) could produce the monochrome bitmap.
Unfortunately this program does not seem to work.

If you use IrfanView to create a monochrome BMP file, LCD Assistant from Bitmap converter for mono and color LCD displays can create a monochrome bitmap but only from a Black&White BMP.
Unfortunately this program will not create a monochrome bitmap from JPG, PNG, ...

I presume you are using a Mega2560. You would not have had the array size problem with a Zero or Due.
You might have noticed that the JPG is 7kB, a Monochrome BMP is 5kB, a 16-colour BMP is 15kB, a 256-colour BMP is 31kB. All these formats can fit in an array. Decoding the BMP or JPG is a lot more complicated than your function to draw RAW pixels.

David.

logo.zip (96.6 KB)