Arduino + TTL Camera +SD

If you want to take one picture, and capture the output, why is the code in loop()? Put the code in setup() and leave loop() empty. Get rid of that while(1) loop.

There should be NO delay()s. You know how much data you need to read. Keep looping until you have read the required amount of data. Do not diddle around with delay(). The delay()s are causing the serial buffer to overflow before you get around to reading all the data.

As you can see from the results, you can keep up for a while, but, eventually you fall behind and start loosing data.