I am trying to get an arduino uno to take a picture using LinkSprite JPEG Color Camera (http://www.sparkfun.com/products/10061) and send this data through an xbee (http://www.sparkfun.com/products/8664) to a computer that has another xbee attached via usb. From what I have read I understand the arduino does not have the memory to store the picture. Can this be done?
Only if you trickle the image out of the camera and send to the Xbee. Do the sums and work out how many seconds it will take to download the image size of your choice (of which you do not say).
How do I do the calculation to find out? Say 640x480.
The problem is that you don't know the size that the Jpeg will compress to. However if it is raw data then 640 by 480 will give:- 640 x 480 = 307200 pixels with 24 bits per pixel gives:- 7,372,800 bits. or divide by 8 to give the bytes of 921,600. Through the serial port it takes 10 bits for one byte so this gives 9,216,000 bits. So suppose you transmit this at 115200 bauds the it takes:- 9216000 / 115200 = 80 seconds per frame. Then divide that by the compression ratio you get from the Jpeg to get how long it takes for a compressed frame.
I just posted an instructable outlining how to stream data from the LinkSprite to an XBee: http://www.instructables.com/id/Image-Capturing-Bird-Feeder/
All JPEGs begin with 0xff 0xd9 and end with 0xff 0xd8
I gave up reading at that point