2021-02-20 09:07:10 -07:00
|
|
|
import type { TemporaryFile } from './TemporaryFile';
|
2023-07-20 07:30:04 -06:00
|
|
|
import { CameraPhotoCodec } from './VideoFile';
|
2021-02-19 08:07:53 -07:00
|
|
|
|
|
|
|
export interface TakePhotoOptions {
|
|
|
|
/**
|
|
|
|
* Indicates how photo quality should be prioritized against speed.
|
|
|
|
*
|
2021-09-24 02:15:26 -06:00
|
|
|
* * `"quality"` Indicates that photo quality is paramount, even at the expense of shot-to-shot time
|
2021-02-19 08:07:53 -07:00
|
|
|
* * `"balanced"` Indicates that photo quality and speed of delivery are balanced in priority
|
2021-09-24 02:15:26 -06:00
|
|
|
* * `"speed"` Indicates that speed of photo delivery is most important, even at the expense of quality
|
2021-02-19 08:07:53 -07:00
|
|
|
*
|
|
|
|
* @platform iOS 13.0+
|
|
|
|
* @default "balanced"
|
|
|
|
*/
|
2021-02-20 09:07:10 -07:00
|
|
|
qualityPrioritization?: 'quality' | 'balanced' | 'speed';
|
2021-02-19 08:07:53 -07:00
|
|
|
/**
|
|
|
|
* Whether the Flash should be enabled or disabled
|
|
|
|
*
|
|
|
|
* @default "auto"
|
|
|
|
*/
|
2021-02-20 09:07:10 -07:00
|
|
|
flash?: 'on' | 'off' | 'auto';
|
2021-02-19 08:07:53 -07:00
|
|
|
/**
|
|
|
|
* Specifies whether red-eye reduction should be applied automatically on flash captures.
|
|
|
|
*
|
|
|
|
* @default false
|
|
|
|
*/
|
|
|
|
enableAutoRedEyeReduction?: boolean;
|
|
|
|
/**
|
|
|
|
* Indicates whether still image stabilization will be employed when capturing the photo
|
|
|
|
*
|
|
|
|
* @default false
|
|
|
|
*/
|
|
|
|
enableAutoStabilization?: boolean;
|
|
|
|
/**
|
|
|
|
* Specifies whether the photo output should use content aware distortion correction on this photo request (at its discretion).
|
|
|
|
*
|
|
|
|
* @default false
|
|
|
|
*/
|
|
|
|
enableAutoDistortionCorrection?: boolean;
|
2023-07-20 07:30:04 -06:00
|
|
|
/**
|
|
|
|
* Specifies the photo codec to use for this capture. The provided photo codec has to be supported by the session.
|
|
|
|
*/
|
|
|
|
photoCodec?: CameraPhotoCodec;
|
2021-02-19 08:07:53 -07:00
|
|
|
/**
|
2021-03-08 10:51:53 -07:00
|
|
|
* When set to `true`, metadata reading and mapping will be skipped. ({@linkcode PhotoFile.metadata} will be null)
|
2021-02-19 08:07:53 -07:00
|
|
|
*
|
|
|
|
* This might result in a faster capture, as metadata reading and mapping requires File IO.
|
|
|
|
*
|
|
|
|
* @default false
|
|
|
|
*
|
|
|
|
* @platform Android
|
|
|
|
*/
|
|
|
|
skipMetadata?: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Represents a Photo taken by the Camera written to the local filesystem.
|
2021-03-08 10:21:30 -07:00
|
|
|
*
|
2021-03-08 10:51:53 -07:00
|
|
|
* Related: {@linkcode Camera.takePhoto | Camera.takePhoto()}, {@linkcode Camera.takeSnapshot | Camera.takeSnapshot()}
|
2021-02-19 08:07:53 -07:00
|
|
|
*/
|
2021-03-08 09:51:47 -07:00
|
|
|
export interface PhotoFile extends TemporaryFile {
|
|
|
|
width: number;
|
|
|
|
height: number;
|
|
|
|
isRawPhoto: boolean;
|
|
|
|
thumbnail?: Record<string, unknown>;
|
2021-03-09 04:02:10 -07:00
|
|
|
/**
|
|
|
|
* Metadata information describing the captured image.
|
|
|
|
*
|
|
|
|
* @see [AVCapturePhoto.metadata](https://developer.apple.com/documentation/avfoundation/avcapturephoto/2873982-metadata)
|
|
|
|
* @see [AndroidX ExifInterface](https://developer.android.com/reference/androidx/exifinterface/media/ExifInterface)
|
|
|
|
*/
|
2021-03-08 09:51:47 -07:00
|
|
|
metadata: {
|
|
|
|
Orientation: number;
|
|
|
|
/**
|
|
|
|
* @platform iOS
|
|
|
|
*/
|
|
|
|
DPIHeight: number;
|
|
|
|
/**
|
|
|
|
* @platform iOS
|
|
|
|
*/
|
|
|
|
DPIWidth: number;
|
|
|
|
/**
|
|
|
|
* Represents any data Apple cameras write to the metadata
|
|
|
|
*
|
|
|
|
* @platform iOS
|
|
|
|
*/
|
|
|
|
'{MakerApple}'?: Record<string, unknown>;
|
|
|
|
'{TIFF}': {
|
|
|
|
ResolutionUnit: number;
|
|
|
|
Software: string;
|
|
|
|
Make: string;
|
|
|
|
DateTime: string;
|
|
|
|
XResolution: number;
|
2021-02-19 08:07:53 -07:00
|
|
|
/**
|
|
|
|
* @platform iOS
|
|
|
|
*/
|
2021-03-08 09:51:47 -07:00
|
|
|
HostComputer?: string;
|
|
|
|
Model: string;
|
|
|
|
YResolution: number;
|
2021-02-19 08:07:53 -07:00
|
|
|
};
|
2021-03-08 09:51:47 -07:00
|
|
|
'{Exif}': {
|
|
|
|
DateTimeOriginal: string;
|
|
|
|
ExposureTime: number;
|
|
|
|
FNumber: number;
|
|
|
|
LensSpecification: number[];
|
|
|
|
ExposureBiasValue: number;
|
|
|
|
ColorSpace: number;
|
|
|
|
FocalLenIn35mmFilm: number;
|
|
|
|
BrightnessValue: number;
|
|
|
|
ExposureMode: number;
|
|
|
|
LensModel: string;
|
|
|
|
SceneType: number;
|
|
|
|
PixelXDimension: number;
|
|
|
|
ShutterSpeedValue: number;
|
|
|
|
SensingMethod: number;
|
|
|
|
SubjectArea: number[];
|
|
|
|
ApertureValue: number;
|
|
|
|
SubsecTimeDigitized: string;
|
|
|
|
FocalLength: number;
|
|
|
|
LensMake: string;
|
|
|
|
SubsecTimeOriginal: string;
|
|
|
|
OffsetTimeDigitized: string;
|
|
|
|
PixelYDimension: number;
|
|
|
|
ISOSpeedRatings: number[];
|
|
|
|
WhiteBalance: number;
|
|
|
|
DateTimeDigitized: string;
|
|
|
|
OffsetTimeOriginal: string;
|
|
|
|
ExifVersion: string;
|
|
|
|
OffsetTime: string;
|
|
|
|
Flash: number;
|
|
|
|
ExposureProgram: number;
|
|
|
|
MeteringMode: number;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|