Alternatively can someone suggest a low cost wifi option that this will work with? So far I’m on my 3rd different wifi device and nothing in this space seems to be able to stream larger files.
Your problem could very well be memory and not the WiFi device. You don’t say which board you’re using with the shield, but most Arduino processors have 2 to 2.5 kbytes of memory, so you have to be careful to read the file in very small chunks. It’s impossible to say what’s actually going on in your case without knowing more details and seeing your code, but the fact that you are now on your third WiFi device and still having trouble tells me that the problem is not in the WiFi device, but in your code.
Unlike most WiFi interfaces, the Yun has the advantage of having a rather powerful Linux computer running the networking. I would suggest writing a Python (or other language) script that runs on the Linux side, and which fetches the file. This will be much faster and more reliable since the Linux side runs much faster than the Arduino processor, and it has plenty of memory. Then once received, the script sends the image to the Arduino sketch in small fixed size chunks so that the sketch can send it to the display. You can still run the Linux script using Process.runAsynchronously().
Ok looks like if I do a get it hangs
That makes sense: get() won’t return until the process is complete. However you don’t have enough memory to be able to read the whole thing in one batch, so the process will never complete until you read some of the data, but with run() you can’t read any data until the process completes. Catch-22.
The answer is to use runAsynchronously(). Doing as much as possible on the Linux side should speed things up, but you are still faced with sending that 240k of data over the serial port that is between the two processors. This will take some time any way you look at it. A large file like that is going to take 20 seconds at a minimum just to send all of the bytes over the serial port, and it will actually take longer because there is some data transmission overhead when talking between the two processors.
You’re running into the memory and speed limitations of the Arduino processors. They are small and limited capacity. If you want to dramatically speed things up, you need to move to a much larger and faster processor, one which can drive the display directly without going through such a small processor. You might be better of with something like a Raspberry Pi or BeagleBone?