rust - Rust image::io::Reader: Permission Denied
问题描述
我正在尝试将一些图像加载到我的 fltk-rs 应用程序中:
fltk = "1.0.1"
image = "0.23.14"
use fltk::{app, app::*, window::*, prelude::*, window::Window, button::*, group::*, image::*};
use std::fs;
use image::*;
use image::io::Reader as ImageReader;
//..
for x in cursor_paths.into_iter(){
let mut but = Button::new(0,0,25,25,"");
let sc = s.clone();
let mut win_cl = win.clone();
let img = ImageReader::open(x.unwrap().path().display().to_string()).unwrap().decode().unwrap();
let bytes = img.clone().into_rgba8().into_vec();
let rgb = fltk::image::RgbImage::new(&bytes, img.clone().width() as i32, img.clone().height() as i32, fltk::enums::ColorDepth::Rgba8).unwrap();
let rgb_cl = rgb.clone();
but.set_callback(move |_|{
win_cl.clone().set_cursor_image(rgb.clone(), 0,0);
});
but.set_image(Some(rgb_cl))
}
//..
但这样做会产生错误:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err`
value: Os { code: 5, kind: PermissionDenied, message: "Access is denied." }', src\main.rs:31:78
这是操作系统问题吗?如果是这样,我该如何解决?
操作系统:Window 10 编辑器:VSCode Rust 版本:2018
解决方案
由于某种原因,似乎是相对路径表示法导致了问题:
let cursor_paths = fs::read_dir("/assets/cursors/").unwrap();
代替:
let cursor_paths = fs::read_dir("./assets/cursors/").unwrap();
推荐阅读
- android - Codenameone 将 mimetype(PNG) 关联到我的应用程序
- r - 在箱线图中显示均值,并绘制折线图
- python-3.x - GeckoDriver 必须在在线服务器(wayscript.com)的可执行路径中
- date - 在 Power BI 中每天显示关键度量的预期值,不包括周末和公共假期
- php - 数组键的随机数,重复的相同随机数
- node.js - NodeJS - 在服务器创建后设置 http 服务器请求监听器
- java - 如何设置 Java 11 的最大内存使用量?
- reactjs - React 功能组件 - 测试一个元素 instanceOf baseElement
- laravel - 从 laravel 下载 Flutter 文件:HandshakeException: Handshake error in client
- java - 无法将供应商功能接口变量应用于 Flux.fromStream 方法