image/
image.rs

1#[cfg(target_os = "linux")]
2use clipboard_rs::ClipboardContextX11Options;
3use clipboard_rs::{common::RustImage, Clipboard, ClipboardContext};
4
5#[cfg(target_os = "macos")]
6const TMP_PATH: &str = "/tmp/";
7#[cfg(target_os = "windows")]
8const TMP_PATH: &str = "C:\\Windows\\Temp\\";
9#[cfg(all(
10	unix,
11	not(any(
12		target_os = "macos",
13		target_os = "ios",
14		target_os = "android",
15		target_os = "emscripten"
16	))
17))]
18const TMP_PATH: &str = "/tmp/";
19// ios
20#[cfg(any(target_os = "ios", target_os = "android"))]
21const TMP_PATH: &str = "/tmp/";
22
23#[cfg(target_os = "linux")]
24fn setup_clipboard() -> ClipboardContext {
25	ClipboardContext::new_with_options(ClipboardContextX11Options { read_timeout: None }).unwrap()
26}
27
28#[cfg(not(target_os = "linux"))]
29fn setup_clipboard() -> ClipboardContext {
30	ClipboardContext::new().unwrap()
31}
32
33fn main() {
34	let ctx = setup_clipboard();
35
36	let types = ctx.available_formats().unwrap();
37	println!("{:?}", types);
38
39	let img = ctx.get_image();
40
41	match img {
42		Ok(img) => {
43			let _ = img
44				.save_to_path(format!("{}test.png", TMP_PATH).as_str())
45				.map_err(|e| println!("save test.png err={}", e));
46
47			let resize_img = img
48				.thumbnail(300, 300)
49				.map_err(|e| println!("thumbnail err={}", e))
50				.unwrap();
51
52			let _ = resize_img
53				.save_to_path(format!("{}test_thumbnail.png", TMP_PATH).as_str())
54				.map_err(|e| println!("save test_thumbnail.png err={}", e));
55		}
56		Err(err) => {
57			println!("err={}", err);
58		}
59	}
60}