You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LeadTools将Bitmap转为RasterImage时遇“Page not found”错误求助

解决RasterImage加载时“Page not found”错误的方法

问题原因分析

出现“Page not found”错误大概率是因为保存的BMP文件实际不存在或加载路径有误——比如Environment.SpecialFolder.MyDocuments路径获取异常、保存时权限不足导致文件未成功写入,或者路径中存在不可见字符(你的代码里MyDoc‌​uments看起来带有隐藏字符)。另外,先存磁盘再加载的方式不仅低效,还容易引入IO相关问题。

解决方案

1. 先排查路径与文件状态

在screenshot.Save(path)之后,添加代码验证文件是否成功保存:

if (!File.Exists(path))
{
    throw new FileNotFoundException("截图文件未成功保存", path);
}

同时输出路径值确认正确性:

Console.WriteLine($"实际保存路径:{path}");

如果路径里有奇怪的隐藏字符,手动修正Environment.SpecialFolder.MyDocuments的拼写,确保没有额外不可见字符。

2. 更优方案:内存中直接转换(无需存磁盘)

跳过磁盘写入步骤,直接通过MemoryStream完成Bitmap到RasterImage的转换,彻底规避路径和IO问题:

public static RasterImage TakeScreenShot()
{
    using (Bitmap screenshot = new Bitmap(1920, 1080))
    {
        using (Graphics g = Graphics.FromImage(screenshot))
        {
            g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(1920, 1080));
            
            // 用内存流直接转换,无需写入磁盘
            using (MemoryStream ms = new MemoryStream())
            {
                screenshot.Save(ms, ImageFormat.Bmp);
                ms.Position = 0; // 重置流指针到起始位置
                
                using (RasterCodecs codecs = new RasterCodecs())
                {
                    return codecs.Load(ms, 0, CodecsLoadByteOrder.BgrOrGray, 0, 0);
                }
            }
        }
    }
}

3. 额外注意事项

  • 确保使用的Leadtools版本支持从MemoryStream加载RasterImage(主流新版本均支持)。
  • 如果必须使用磁盘文件,检查目标文件夹的写入权限,确认当前程序有权限写入MyDocuments目录。

内容的提问来源于stack exchange,提问作者Fabio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:05:19