保存图片接口的一些疑问
Closed this issue · 4 comments
你好,我在使用 save-image
时发现这个调用会很慢才会返回。
查看源码发现源码内先调用了 DOWNLOAD_ATTACH
然后再调用 DECRYPT_IMAGE
。
但是在 wcf.exe
日志中,发现 [2024-05-08 11:28:38.530] [debug] [WCF] [funcs.cpp::242::DownloadAttach] path: xxx.dat
这个日志中保存的 .dat
文件其实就是图片文件, 修改后缀之后就是原图。所以是否可以不用 DECRYPT_IMAGE
。
在 rust
的 save_image
方法中 decrypt_image
超时逻辑的实现是通过 loop
loop {
if counter >= msg.timeout {
break;
}
match wc.clone().decrypt_image(DecPath {
src: msg.extra.clone(),
dst: msg.dir.clone(),
}) {
Ok(path) => {
if path.is_empty() {
counter += 1;
sleep(Duration::from_secs(1));
continue;
}
return Ok(warp::reply::json(&ApiResponse {
status: 0,
error: None,
data: Some(path),
}));
}
Err(error) => return handle_error(&error.to_string()),
};
}
其实 loop
逻辑中会多次调用 decrypt_image
可能会导致多次解密。
你好,我在使用
save-image
时发现这个调用会很慢才会返回。 查看源码发现源码内先调用了DOWNLOAD_ATTACH
然后再调用DECRYPT_IMAGE
。 但是在wcf.exe
日志中,发现[2024-05-08 11:28:38.530] [debug] [WCF] [funcs.cpp::242::DownloadAttach] path: xxx.dat
这个日志中保存的.dat
文件其实就是图片文件, 修改后缀之后就是原图。所以是否可以不用DECRYPT_IMAGE
。在
rust
的save_image
方法中decrypt_image
超时逻辑的实现是通过loop
loop { if counter >= msg.timeout { break; } match wc.clone().decrypt_image(DecPath { src: msg.extra.clone(), dst: msg.dir.clone(), }) { Ok(path) => { if path.is_empty() { counter += 1; sleep(Duration::from_secs(1)); continue; } return Ok(warp::reply::json(&ApiResponse { status: 0, error: None, data: Some(path), })); } Err(error) => return handle_error(&error.to_string()), }; }其实
loop
逻辑中会多次调用decrypt_image
可能会导致多次解密。
测试发现是因为我请求的是 localhost
改成 127.0.0.1
会变快。顺便测试了不解密图片的 dat
文件确实可以使用。
你好,我在使用
save-image
时发现这个调用会很慢才会返回。 查看源码发现源码内先调用了DOWNLOAD_ATTACH
然后再调用DECRYPT_IMAGE
。 但是在wcf.exe
日志中,发现[2024-05-08 11:28:38.530] [debug] [WCF] [funcs.cpp::242::DownloadAttach] path: xxx.dat
这个日志中保存的.dat
文件其实就是图片文件, 修改后缀之后就是原图。所以是否可以不用DECRYPT_IMAGE
。
在rust
的save_image
方法中decrypt_image
超时逻辑的实现是通过loop
loop { if counter >= msg.timeout { break; } match wc.clone().decrypt_image(DecPath { src: msg.extra.clone(), dst: msg.dir.clone(), }) { Ok(path) => { if path.is_empty() { counter += 1; sleep(Duration::from_secs(1)); continue; } return Ok(warp::reply::json(&ApiResponse { status: 0, error: None, data: Some(path), })); } Err(error) => return handle_error(&error.to_string()), }; }其实
loop
逻辑中会多次调用decrypt_image
可能会导致多次解密。测试发现是因为我请求的是
localhost
改成127.0.0.1
会变快。顺便测试了不解密图片的dat
文件确实可以使用。
可以使用指的是可以直接打开查看
吗?
你好,我在使用
save-image
时发现这个调用会很慢才会返回。 查看源码发现源码内先调用了DOWNLOAD_ATTACH
然后再调用DECRYPT_IMAGE
。 但是在wcf.exe
日志中,发现[2024-05-08 11:28:38.530] [debug] [WCF] [funcs.cpp::242::DownloadAttach] path: xxx.dat
这个日志中保存的.dat
文件其实就是图片文件, 修改后缀之后就是原图。所以是否可以不用DECRYPT_IMAGE
。
在rust
的save_image
方法中decrypt_image
超时逻辑的实现是通过loop
loop { if counter >= msg.timeout { break; } match wc.clone().decrypt_image(DecPath { src: msg.extra.clone(), dst: msg.dir.clone(), }) { Ok(path) => { if path.is_empty() { counter += 1; sleep(Duration::from_secs(1)); continue; } return Ok(warp::reply::json(&ApiResponse { status: 0, error: None, data: Some(path), })); } Err(error) => return handle_error(&error.to_string()), }; }其实
loop
逻辑中会多次调用decrypt_image
可能会导致多次解密。测试发现是因为我请求的是
localhost
改成127.0.0.1
会变快。顺便测试了不解密图片的dat
文件确实可以使用。可以使用指的是可以
直接打开查看
吗?
对,改后缀名就可以直接查看了
虽然有点儿不可思议,但能用就行。