Capturing images using the mobile device's camera is easy with AppSheet.
To capture images, insert a column in your spreadsheet and include the word "Image" in the column header. For example, if you want to capture three images, you can name your columns "Image1", "Image2", and "Image3". When you regenerate column structure, AppSheet will automatically detect these columns and set their type to "Image".
Alternatively, you can name the column anything you like and change the Column Type to Image on the Data>Column Structure tab.
For apps that want to exclusively work with small thumbnail images, we provide a "Thumbnail" type. AppSheet does not automatically detect the difference between a regular image and a thumbnail. To explicitly choose the Thumbnail type, change the Column Type to Thumbnail on the Data>Column Structure tab.. To see an example of thumbnails, look at the Marketing Docs sample.
Capturing Images on Android Devices
On Android devices the user is prompted with the choice to take a new photo or use the camera roll.
Capturing Images on iOS Devices
On iOS devices the camera is launched by default. To enable browsing of photos from the camera roll, do the following.
- From the iOS home screen, click "Settings" to open the device "Settings" app.
- Scroll to and click "AppSheet". It will be present if you have AppSheet installed on your iOS device.
- Under "Camera" set "Prompt for Camera Roll" to "On".
Capturing Images in a Web Browser
Your AppSheet app can be run directly in a web browser. However, this impacts the behavior of image capture.
When an AppSheet app is run in a web browser on a desktop or laptop, the camera is not used for image input. Instead, the user is prompted to pick an image from the filesystem. When an AppSheet app is run in a web browser on a mobile device, the camera is used for image input.
In either case, it is important to note that the new or updated record with the image must be synced to the backend _before_ the browser tab is closed. Otherwise, the captured image content will be lost. If you expect to run your app in a browser and the app captures images, do not enable delayed sync (and if you do enable delayed sync, please advise your users to explicitly sync their changes before closing the browser). If the browser is used on a mobile device, please be aware that simply switching away from the browser app to another app on the device can cause the browser to be automatically closed by the device operating system.
Controlling Image Size
You can control the captured image size using the Editor>UX>Options tab>Image upload resolution. This sets the maximum image width to one of the following options:
- Default: 600px
- Low: 200px
- Medium: 800px
- High: 1600px
- Full: use the original image size
If you have issues with device crashes or hangs while taking photos, please see this article.
How Image Capture Works
Here's how AppSheet processes the photos taken with the camera:
- Any photo taken on a device with your app is saved in full resolution in the camera roll on the device. See how the camera function works in our Site Scout sample app. Note: if you use the app on the desktop, the image capture function only allows you to open an image file. Using the image function on a mobile device will allow you to either upload an image from your device's gallery or to manually take a photo.
- When the user presses the Sync button, the photo is downloaded at a reduced resolution to conserve network bandwidth. The image resolution used is controllable as described above.
- The image is saved in a subfolder in the same location as the spreadsheet. Each image file name is prefixed by the key of the row being updated, the column name, and a short representation of a timestamp. The structure of the filenames and folder structure is not changeable. However, you can use a computed-key if you would like to have more meaningful names for these files.
- The row in the spreadsheet is updated to contain the name of the image file just created. The image file name includes the row key as well as the column name so that it can easily be correlated to the corresponding row.