Rust 如何使用标准存储图像?
在我的终端命令中,Rust 如何使用标准存储图像?,rust,Rust,在我的终端命令中,adb shell screencap-p | sed's/\r$/'>screen.png如果可以,请保存我的android屏幕 我知道可以使用adb pull,但我想知道如何使用标准方式将图像保存在锈迹中?所以,我试试这个代码,买不开图片。编码可能有问题,但我不知道如何解决 let output = Command::new("adb") .arg("shell") .arg("screencap -p")
adb shell screencap-p | sed's/\r$/'>screen.png
如果可以,请保存我的android屏幕
我知道可以使用adb pull
,但我想知道如何使用标准方式将图像保存在锈迹中?所以,我试试这个代码,买不开图片。编码可能有问题,但我不知道如何解决
let output = Command::new("adb")
.arg("shell")
.arg("screencap -p")
.output()
.expect("failed to execute process");
let byte_string = String::from_utf8_lossy(&output.stdout).replace("\r\n","\n");
let byte_string = String::from_utf8_lossy(&output.stdout);
let mut buffer = File::create("foo.png")?;
buffer.write(&byte_string.as_bytes())?;
图像数据是二进制的,而不是Unicode字符串。因此,您需要打印
和[u8]
,而不是UTF-8字符串
let out = std::io::stdout();
out.write_all(slice)?;
out.flush()?;
flush
是必要的,因为紧跟在程序退出之后的write_all
无法将字节传递到底层文件描述符
由于rust没有对u8数组进行字符串处理,因此您需要通过迭代字节并检查当前字节是否为\r,下一个是否为\n来手动撤消adb损坏,然后跳过当前字节。请将您的问题包含在您得到的错误中。OP将如何执行他们希望替换的\r
make?它似乎跳过了最后一个字节