pub struct Camera { /* private fields */ }Expand description
A structure representing a camera connected to the system.
Implementations§
Source§impl Camera
impl Camera
Sourcepub fn autodetect(context: &mut Context) -> Result<Self>
pub fn autodetect(context: &mut Context) -> Result<Self>
Opens the first detected camera.
Examples found in repository?
5fn main() {
6 let mut context = match gphoto::Context::new() {
7 Ok(c) => c,
8 Err(err) => panic!("error creating context: {}", err)
9 };
10
11 // open camera
12
13 println!("opening camera ...");
14 let mut camera = match gphoto::Camera::autodetect(&mut context) {
15 Ok(c) => c,
16 Err(err) => panic!("error opening camera: {}", err)
17 };
18 println!(" (done)");
19
20 // capture image
21
22 println!("capturing image ...");
23 let capture = match camera.capture_image(&mut context) {
24 Ok(c) => c,
25 Err(err) => panic!("error capturing image: {}", err)
26 };
27 println!(" (done) {:?}", capture.basename());
28
29 // download file
30
31 let mut file = match gphoto::FileMedia::create(Path::new(capture.basename().as_ref())) {
32 Ok(f) => f,
33 Err(err) => panic!("error saving file: {}", err)
34 };
35
36 println!("downloading ...");
37 if let Err(err) = camera.download(&mut context, &capture, &mut file) {
38 panic!("error downloading file: {}", err);
39 }
40 println!(" (done)");
41}More examples
3fn main() {
4 let mut context = match gphoto::Context::new() {
5 Ok(c) => c,
6 Err(err) => panic!("error creating context: {}", err)
7 };
8
9 let mut camera = match gphoto::Camera::autodetect(&mut context) {
10 Ok(c) => c,
11 Err(err) => panic!("error opening camera: {}", err)
12 };
13
14 {
15 let port = camera.port();
16
17 println!("[port info]");
18 println!("port type = {:?}", port.port_type());
19 println!("port name = {:?}", port.name());
20 println!("port path = {:?}", port.path());
21 }
22
23 let abilities = camera.abilities();
24
25 println!("\n[abilities]");
26 println!(" device type = {:?}", abilities.device_type());
27 println!(" model = {:?}", abilities.model());
28 println!(" driver status = {:?}", abilities.driver_status());
29 println!(" port types = {:?}", abilities.port_types());
30 println!(" speeds = {:?}", abilities.speeds());
31 println!("camera operations = {:?}", abilities.camera_operations());
32 println!(" file operations = {:?}", abilities.file_operations());
33 println!("folder operations = {:?}", abilities.folder_operations());
34 println!(" USB vendor = {:?}", abilities.usb_vendor());
35 println!(" USB product = {:?}", abilities.usb_product());
36 println!(" USB class = {:?}", abilities.usb_class());
37 println!(" USB subclass = {:?}", abilities.usb_subclass());
38 println!(" USB protocol = {:?}", abilities.usb_protocol());
39
40 match camera.storage(&mut context) {
41 Ok(storage) => {
42 for s in storage {
43 println!("\n[storage]");
44 println!(" base dir = {:?}", s.base_dir());
45 println!(" label = {:?}", s.label());
46 println!(" description = {:?}", s.description());
47 println!(" storage type = {:?}", s.storage_type());
48 println!("filesystem type = {:?}", s.filesystem_type());
49 println!(" access type = {:?}", s.access_type());
50 println!(" capacity kb = {:?}", s.capacity_kbytes());
51 println!(" free kb = {:?}", s.free_kbytes());
52 println!(" free images = {:?}", s.free_images());
53 }
54 },
55 Err(err) => println!("\ncould not retrieve storage information: {}", err)
56 }
57
58 if let Ok(s) = camera.summary(&mut context) {
59 println!("\n[summary]\n{}", s);
60 }
61
62 if let Ok(s) = camera.manual(&mut context) {
63 println!("\n[manual]\n{}", s);
64 }
65
66 if let Ok(s) = camera.about_driver(&mut context) {
67 println!("\n[driver]\n{}", s);
68 }
69}Sourcepub fn capture_image(&mut self, context: &mut Context) -> Result<CameraFile>
pub fn capture_image(&mut self, context: &mut Context) -> Result<CameraFile>
Captures an image.
Examples found in repository?
5fn main() {
6 let mut context = match gphoto::Context::new() {
7 Ok(c) => c,
8 Err(err) => panic!("error creating context: {}", err)
9 };
10
11 // open camera
12
13 println!("opening camera ...");
14 let mut camera = match gphoto::Camera::autodetect(&mut context) {
15 Ok(c) => c,
16 Err(err) => panic!("error opening camera: {}", err)
17 };
18 println!(" (done)");
19
20 // capture image
21
22 println!("capturing image ...");
23 let capture = match camera.capture_image(&mut context) {
24 Ok(c) => c,
25 Err(err) => panic!("error capturing image: {}", err)
26 };
27 println!(" (done) {:?}", capture.basename());
28
29 // download file
30
31 let mut file = match gphoto::FileMedia::create(Path::new(capture.basename().as_ref())) {
32 Ok(f) => f,
33 Err(err) => panic!("error saving file: {}", err)
34 };
35
36 println!("downloading ...");
37 if let Err(err) = camera.download(&mut context, &capture, &mut file) {
38 panic!("error downloading file: {}", err);
39 }
40 println!(" (done)");
41}Sourcepub fn download<T: Media>(
&mut self,
context: &mut Context,
source: &CameraFile,
destination: &mut T,
) -> Result<()>
pub fn download<T: Media>( &mut self, context: &mut Context, source: &CameraFile, destination: &mut T, ) -> Result<()>
Downloads a file from the camera.
Examples found in repository?
5fn main() {
6 let mut context = match gphoto::Context::new() {
7 Ok(c) => c,
8 Err(err) => panic!("error creating context: {}", err)
9 };
10
11 // open camera
12
13 println!("opening camera ...");
14 let mut camera = match gphoto::Camera::autodetect(&mut context) {
15 Ok(c) => c,
16 Err(err) => panic!("error opening camera: {}", err)
17 };
18 println!(" (done)");
19
20 // capture image
21
22 println!("capturing image ...");
23 let capture = match camera.capture_image(&mut context) {
24 Ok(c) => c,
25 Err(err) => panic!("error capturing image: {}", err)
26 };
27 println!(" (done) {:?}", capture.basename());
28
29 // download file
30
31 let mut file = match gphoto::FileMedia::create(Path::new(capture.basename().as_ref())) {
32 Ok(f) => f,
33 Err(err) => panic!("error saving file: {}", err)
34 };
35
36 println!("downloading ...");
37 if let Err(err) = camera.download(&mut context, &capture, &mut file) {
38 panic!("error downloading file: {}", err);
39 }
40 println!(" (done)");
41}Sourcepub fn port<'a>(&'a self) -> Port<'a>
pub fn port<'a>(&'a self) -> Port<'a>
Returns information about the port the camera is connected to.
Examples found in repository?
3fn main() {
4 let mut context = match gphoto::Context::new() {
5 Ok(c) => c,
6 Err(err) => panic!("error creating context: {}", err)
7 };
8
9 let mut camera = match gphoto::Camera::autodetect(&mut context) {
10 Ok(c) => c,
11 Err(err) => panic!("error opening camera: {}", err)
12 };
13
14 {
15 let port = camera.port();
16
17 println!("[port info]");
18 println!("port type = {:?}", port.port_type());
19 println!("port name = {:?}", port.name());
20 println!("port path = {:?}", port.path());
21 }
22
23 let abilities = camera.abilities();
24
25 println!("\n[abilities]");
26 println!(" device type = {:?}", abilities.device_type());
27 println!(" model = {:?}", abilities.model());
28 println!(" driver status = {:?}", abilities.driver_status());
29 println!(" port types = {:?}", abilities.port_types());
30 println!(" speeds = {:?}", abilities.speeds());
31 println!("camera operations = {:?}", abilities.camera_operations());
32 println!(" file operations = {:?}", abilities.file_operations());
33 println!("folder operations = {:?}", abilities.folder_operations());
34 println!(" USB vendor = {:?}", abilities.usb_vendor());
35 println!(" USB product = {:?}", abilities.usb_product());
36 println!(" USB class = {:?}", abilities.usb_class());
37 println!(" USB subclass = {:?}", abilities.usb_subclass());
38 println!(" USB protocol = {:?}", abilities.usb_protocol());
39
40 match camera.storage(&mut context) {
41 Ok(storage) => {
42 for s in storage {
43 println!("\n[storage]");
44 println!(" base dir = {:?}", s.base_dir());
45 println!(" label = {:?}", s.label());
46 println!(" description = {:?}", s.description());
47 println!(" storage type = {:?}", s.storage_type());
48 println!("filesystem type = {:?}", s.filesystem_type());
49 println!(" access type = {:?}", s.access_type());
50 println!(" capacity kb = {:?}", s.capacity_kbytes());
51 println!(" free kb = {:?}", s.free_kbytes());
52 println!(" free images = {:?}", s.free_images());
53 }
54 },
55 Err(err) => println!("\ncould not retrieve storage information: {}", err)
56 }
57
58 if let Ok(s) = camera.summary(&mut context) {
59 println!("\n[summary]\n{}", s);
60 }
61
62 if let Ok(s) = camera.manual(&mut context) {
63 println!("\n[manual]\n{}", s);
64 }
65
66 if let Ok(s) = camera.about_driver(&mut context) {
67 println!("\n[driver]\n{}", s);
68 }
69}Sourcepub fn abilities(&self) -> Abilities
pub fn abilities(&self) -> Abilities
Retrieves the camera’s abilities.
Examples found in repository?
3fn main() {
4 let mut context = match gphoto::Context::new() {
5 Ok(c) => c,
6 Err(err) => panic!("error creating context: {}", err)
7 };
8
9 let mut camera = match gphoto::Camera::autodetect(&mut context) {
10 Ok(c) => c,
11 Err(err) => panic!("error opening camera: {}", err)
12 };
13
14 {
15 let port = camera.port();
16
17 println!("[port info]");
18 println!("port type = {:?}", port.port_type());
19 println!("port name = {:?}", port.name());
20 println!("port path = {:?}", port.path());
21 }
22
23 let abilities = camera.abilities();
24
25 println!("\n[abilities]");
26 println!(" device type = {:?}", abilities.device_type());
27 println!(" model = {:?}", abilities.model());
28 println!(" driver status = {:?}", abilities.driver_status());
29 println!(" port types = {:?}", abilities.port_types());
30 println!(" speeds = {:?}", abilities.speeds());
31 println!("camera operations = {:?}", abilities.camera_operations());
32 println!(" file operations = {:?}", abilities.file_operations());
33 println!("folder operations = {:?}", abilities.folder_operations());
34 println!(" USB vendor = {:?}", abilities.usb_vendor());
35 println!(" USB product = {:?}", abilities.usb_product());
36 println!(" USB class = {:?}", abilities.usb_class());
37 println!(" USB subclass = {:?}", abilities.usb_subclass());
38 println!(" USB protocol = {:?}", abilities.usb_protocol());
39
40 match camera.storage(&mut context) {
41 Ok(storage) => {
42 for s in storage {
43 println!("\n[storage]");
44 println!(" base dir = {:?}", s.base_dir());
45 println!(" label = {:?}", s.label());
46 println!(" description = {:?}", s.description());
47 println!(" storage type = {:?}", s.storage_type());
48 println!("filesystem type = {:?}", s.filesystem_type());
49 println!(" access type = {:?}", s.access_type());
50 println!(" capacity kb = {:?}", s.capacity_kbytes());
51 println!(" free kb = {:?}", s.free_kbytes());
52 println!(" free images = {:?}", s.free_images());
53 }
54 },
55 Err(err) => println!("\ncould not retrieve storage information: {}", err)
56 }
57
58 if let Ok(s) = camera.summary(&mut context) {
59 println!("\n[summary]\n{}", s);
60 }
61
62 if let Ok(s) = camera.manual(&mut context) {
63 println!("\n[manual]\n{}", s);
64 }
65
66 if let Ok(s) = camera.about_driver(&mut context) {
67 println!("\n[driver]\n{}", s);
68 }
69}Sourcepub fn storage(&mut self, context: &mut Context) -> Result<Vec<Storage>>
pub fn storage(&mut self, context: &mut Context) -> Result<Vec<Storage>>
Retrieves information about the camera’s storage.
Returns a Vec containing one Storage for each filesystem on the device.
Examples found in repository?
3fn main() {
4 let mut context = match gphoto::Context::new() {
5 Ok(c) => c,
6 Err(err) => panic!("error creating context: {}", err)
7 };
8
9 let mut camera = match gphoto::Camera::autodetect(&mut context) {
10 Ok(c) => c,
11 Err(err) => panic!("error opening camera: {}", err)
12 };
13
14 {
15 let port = camera.port();
16
17 println!("[port info]");
18 println!("port type = {:?}", port.port_type());
19 println!("port name = {:?}", port.name());
20 println!("port path = {:?}", port.path());
21 }
22
23 let abilities = camera.abilities();
24
25 println!("\n[abilities]");
26 println!(" device type = {:?}", abilities.device_type());
27 println!(" model = {:?}", abilities.model());
28 println!(" driver status = {:?}", abilities.driver_status());
29 println!(" port types = {:?}", abilities.port_types());
30 println!(" speeds = {:?}", abilities.speeds());
31 println!("camera operations = {:?}", abilities.camera_operations());
32 println!(" file operations = {:?}", abilities.file_operations());
33 println!("folder operations = {:?}", abilities.folder_operations());
34 println!(" USB vendor = {:?}", abilities.usb_vendor());
35 println!(" USB product = {:?}", abilities.usb_product());
36 println!(" USB class = {:?}", abilities.usb_class());
37 println!(" USB subclass = {:?}", abilities.usb_subclass());
38 println!(" USB protocol = {:?}", abilities.usb_protocol());
39
40 match camera.storage(&mut context) {
41 Ok(storage) => {
42 for s in storage {
43 println!("\n[storage]");
44 println!(" base dir = {:?}", s.base_dir());
45 println!(" label = {:?}", s.label());
46 println!(" description = {:?}", s.description());
47 println!(" storage type = {:?}", s.storage_type());
48 println!("filesystem type = {:?}", s.filesystem_type());
49 println!(" access type = {:?}", s.access_type());
50 println!(" capacity kb = {:?}", s.capacity_kbytes());
51 println!(" free kb = {:?}", s.free_kbytes());
52 println!(" free images = {:?}", s.free_images());
53 }
54 },
55 Err(err) => println!("\ncould not retrieve storage information: {}", err)
56 }
57
58 if let Ok(s) = camera.summary(&mut context) {
59 println!("\n[summary]\n{}", s);
60 }
61
62 if let Ok(s) = camera.manual(&mut context) {
63 println!("\n[manual]\n{}", s);
64 }
65
66 if let Ok(s) = camera.about_driver(&mut context) {
67 println!("\n[driver]\n{}", s);
68 }
69}Sourcepub fn summary(&mut self, context: &mut Context) -> Result<String>
pub fn summary(&mut self, context: &mut Context) -> Result<String>
Returns the camera’s summary.
The summary typically contains non-configurable information about the camera, such as manufacturer and number of pictures taken.
§Errors
This function returns an error if the summary could not be retrieved:
NotSupportedif there is no summary available for the camera.CorruptedDataif the summary is invalid UTF-8.
Examples found in repository?
3fn main() {
4 let mut context = match gphoto::Context::new() {
5 Ok(c) => c,
6 Err(err) => panic!("error creating context: {}", err)
7 };
8
9 let mut camera = match gphoto::Camera::autodetect(&mut context) {
10 Ok(c) => c,
11 Err(err) => panic!("error opening camera: {}", err)
12 };
13
14 {
15 let port = camera.port();
16
17 println!("[port info]");
18 println!("port type = {:?}", port.port_type());
19 println!("port name = {:?}", port.name());
20 println!("port path = {:?}", port.path());
21 }
22
23 let abilities = camera.abilities();
24
25 println!("\n[abilities]");
26 println!(" device type = {:?}", abilities.device_type());
27 println!(" model = {:?}", abilities.model());
28 println!(" driver status = {:?}", abilities.driver_status());
29 println!(" port types = {:?}", abilities.port_types());
30 println!(" speeds = {:?}", abilities.speeds());
31 println!("camera operations = {:?}", abilities.camera_operations());
32 println!(" file operations = {:?}", abilities.file_operations());
33 println!("folder operations = {:?}", abilities.folder_operations());
34 println!(" USB vendor = {:?}", abilities.usb_vendor());
35 println!(" USB product = {:?}", abilities.usb_product());
36 println!(" USB class = {:?}", abilities.usb_class());
37 println!(" USB subclass = {:?}", abilities.usb_subclass());
38 println!(" USB protocol = {:?}", abilities.usb_protocol());
39
40 match camera.storage(&mut context) {
41 Ok(storage) => {
42 for s in storage {
43 println!("\n[storage]");
44 println!(" base dir = {:?}", s.base_dir());
45 println!(" label = {:?}", s.label());
46 println!(" description = {:?}", s.description());
47 println!(" storage type = {:?}", s.storage_type());
48 println!("filesystem type = {:?}", s.filesystem_type());
49 println!(" access type = {:?}", s.access_type());
50 println!(" capacity kb = {:?}", s.capacity_kbytes());
51 println!(" free kb = {:?}", s.free_kbytes());
52 println!(" free images = {:?}", s.free_images());
53 }
54 },
55 Err(err) => println!("\ncould not retrieve storage information: {}", err)
56 }
57
58 if let Ok(s) = camera.summary(&mut context) {
59 println!("\n[summary]\n{}", s);
60 }
61
62 if let Ok(s) = camera.manual(&mut context) {
63 println!("\n[manual]\n{}", s);
64 }
65
66 if let Ok(s) = camera.about_driver(&mut context) {
67 println!("\n[driver]\n{}", s);
68 }
69}Sourcepub fn manual(&mut self, context: &mut Context) -> Result<String>
pub fn manual(&mut self, context: &mut Context) -> Result<String>
Returns the camera’s manual.
The manual contains information about using the camera.
§Errors
This function returns an error if the manual could not be retrieved:
NotSupportedif there is no manual available for the camera.CorruptedDataif the summary is invalid UTF-8.
Examples found in repository?
3fn main() {
4 let mut context = match gphoto::Context::new() {
5 Ok(c) => c,
6 Err(err) => panic!("error creating context: {}", err)
7 };
8
9 let mut camera = match gphoto::Camera::autodetect(&mut context) {
10 Ok(c) => c,
11 Err(err) => panic!("error opening camera: {}", err)
12 };
13
14 {
15 let port = camera.port();
16
17 println!("[port info]");
18 println!("port type = {:?}", port.port_type());
19 println!("port name = {:?}", port.name());
20 println!("port path = {:?}", port.path());
21 }
22
23 let abilities = camera.abilities();
24
25 println!("\n[abilities]");
26 println!(" device type = {:?}", abilities.device_type());
27 println!(" model = {:?}", abilities.model());
28 println!(" driver status = {:?}", abilities.driver_status());
29 println!(" port types = {:?}", abilities.port_types());
30 println!(" speeds = {:?}", abilities.speeds());
31 println!("camera operations = {:?}", abilities.camera_operations());
32 println!(" file operations = {:?}", abilities.file_operations());
33 println!("folder operations = {:?}", abilities.folder_operations());
34 println!(" USB vendor = {:?}", abilities.usb_vendor());
35 println!(" USB product = {:?}", abilities.usb_product());
36 println!(" USB class = {:?}", abilities.usb_class());
37 println!(" USB subclass = {:?}", abilities.usb_subclass());
38 println!(" USB protocol = {:?}", abilities.usb_protocol());
39
40 match camera.storage(&mut context) {
41 Ok(storage) => {
42 for s in storage {
43 println!("\n[storage]");
44 println!(" base dir = {:?}", s.base_dir());
45 println!(" label = {:?}", s.label());
46 println!(" description = {:?}", s.description());
47 println!(" storage type = {:?}", s.storage_type());
48 println!("filesystem type = {:?}", s.filesystem_type());
49 println!(" access type = {:?}", s.access_type());
50 println!(" capacity kb = {:?}", s.capacity_kbytes());
51 println!(" free kb = {:?}", s.free_kbytes());
52 println!(" free images = {:?}", s.free_images());
53 }
54 },
55 Err(err) => println!("\ncould not retrieve storage information: {}", err)
56 }
57
58 if let Ok(s) = camera.summary(&mut context) {
59 println!("\n[summary]\n{}", s);
60 }
61
62 if let Ok(s) = camera.manual(&mut context) {
63 println!("\n[manual]\n{}", s);
64 }
65
66 if let Ok(s) = camera.about_driver(&mut context) {
67 println!("\n[driver]\n{}", s);
68 }
69}Sourcepub fn about_driver(&mut self, context: &mut Context) -> Result<String>
pub fn about_driver(&mut self, context: &mut Context) -> Result<String>
Returns information about the camera driver.
This text typically contains information about the driver’s author, acknowledgements, etc.
§Errors
This function returns an error if the about text could not be retrieved:
NotSupportedif there is no about text available for the camera’s driver.CorruptedDataif the summary is invalid UTF-8.
Examples found in repository?
3fn main() {
4 let mut context = match gphoto::Context::new() {
5 Ok(c) => c,
6 Err(err) => panic!("error creating context: {}", err)
7 };
8
9 let mut camera = match gphoto::Camera::autodetect(&mut context) {
10 Ok(c) => c,
11 Err(err) => panic!("error opening camera: {}", err)
12 };
13
14 {
15 let port = camera.port();
16
17 println!("[port info]");
18 println!("port type = {:?}", port.port_type());
19 println!("port name = {:?}", port.name());
20 println!("port path = {:?}", port.path());
21 }
22
23 let abilities = camera.abilities();
24
25 println!("\n[abilities]");
26 println!(" device type = {:?}", abilities.device_type());
27 println!(" model = {:?}", abilities.model());
28 println!(" driver status = {:?}", abilities.driver_status());
29 println!(" port types = {:?}", abilities.port_types());
30 println!(" speeds = {:?}", abilities.speeds());
31 println!("camera operations = {:?}", abilities.camera_operations());
32 println!(" file operations = {:?}", abilities.file_operations());
33 println!("folder operations = {:?}", abilities.folder_operations());
34 println!(" USB vendor = {:?}", abilities.usb_vendor());
35 println!(" USB product = {:?}", abilities.usb_product());
36 println!(" USB class = {:?}", abilities.usb_class());
37 println!(" USB subclass = {:?}", abilities.usb_subclass());
38 println!(" USB protocol = {:?}", abilities.usb_protocol());
39
40 match camera.storage(&mut context) {
41 Ok(storage) => {
42 for s in storage {
43 println!("\n[storage]");
44 println!(" base dir = {:?}", s.base_dir());
45 println!(" label = {:?}", s.label());
46 println!(" description = {:?}", s.description());
47 println!(" storage type = {:?}", s.storage_type());
48 println!("filesystem type = {:?}", s.filesystem_type());
49 println!(" access type = {:?}", s.access_type());
50 println!(" capacity kb = {:?}", s.capacity_kbytes());
51 println!(" free kb = {:?}", s.free_kbytes());
52 println!(" free images = {:?}", s.free_images());
53 }
54 },
55 Err(err) => println!("\ncould not retrieve storage information: {}", err)
56 }
57
58 if let Ok(s) = camera.summary(&mut context) {
59 println!("\n[summary]\n{}", s);
60 }
61
62 if let Ok(s) = camera.manual(&mut context) {
63 println!("\n[manual]\n{}", s);
64 }
65
66 if let Ok(s) = camera.about_driver(&mut context) {
67 println!("\n[driver]\n{}", s);
68 }
69}