我的应用程序中有2种方法可以从手机中选择图像。一个可以接受任何类型的文件,因此我使用file_picker进行操作,而另一个仅接受图像。
如何按文件类型过滤?我需要使用像这样的其他包装吗? https://pub.dev/packages/image_picker
答案 0 :(得分:0)
我可以只使用use cpython::Python;
use std::thread;
use std::sync::mpsc;
use std::time::Instant;
#[test]
fn python_test_parallel() {
let start = Instant::now();
let (tx_output, rx_output) = mpsc::channel();
let tx_output_1 = mpsc::Sender::clone(&tx_output);
thread::spawn(move || {
let gil = Python::acquire_gil();
let py = gil.python();
let start_thread = Instant::now();
py.run("j=0\nfor i in range(10000000): j=j+i;", None, None).unwrap();
println!("{:27} : {:6.1} ms", "Run time thread 1, parallel", (Instant::now() - start_thread).as_secs_f64() * 1000f64);
tx_output_1.send(()).unwrap();
});
let tx_output_2 = mpsc::Sender::clone(&tx_output);
thread::spawn(move || {
let gil = Python::acquire_gil();
let py = gil.python();
let start_thread = Instant::now();
py.run("j=0\nfor i in range(10000000): j=j+i;", None, None).unwrap();
println!("{:27} : {:6.1} ms", "Run time thread 2, parallel", (Instant::now() - start_thread).as_secs_f64() * 1000f64);
tx_output_2.send(()).unwrap();
});
// Receivers to ensure all threads run
let _output_1 = rx_output.recv().unwrap();
let _output_2 = rx_output.recv().unwrap();
println!("{:37} : {:6.1} ms", "Total time, parallel", (Instant::now() - start).as_secs_f64() * 1000f64);
}
包并做类似的事情
FilePicker
FilePicker.getFilePath(type: FileType.CUSTOM, fileExtension: 'jpg');
也适用于任何类型的图像。
要获取任何文件,我只需删除type: FileType.IMAGE
和fileExtension
答案 1 :(得分:0)
使用file_picker,我们可以通过指定type
参数来限制仅图像文件的选择:
FilePicker.getFile(type: FileType.IMAGE)
或单个文件扩展名:
FilePicker.getFile(type: FileType.CUSTOM, fileExtension: "JPG");