首页 > 解决方案 > 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

标签: rust

解决方案


由于某种原因,似乎是相对路径表示法导致了问题:

 let cursor_paths = fs::read_dir("/assets/cursors/").unwrap();

代替:

let cursor_paths = fs::read_dir("./assets/cursors/").unwrap();

推荐阅读