张光荣的正能量 [机械软件...改革利剑...向着改变世界...]

博客园 首页 新随笔 联系 订阅 管理

源于:在读取图片时,总喜欢首先采用:Image img=Image.FromFile("");操作,这种方式由于 调用图片的程序与图片文件是通过 绝对地址关联的,会造成 当前进程或其它进程无法对该图片 进行类似的操作[提示文件正在使用中]...

回想曾经有过的做法,即将图片数据读取到内存中,再进行显示等相关操作,这样就让程序与其图片地址没有直接的操作关联...从而达到重复对图片进行读取,校验...等可能的操作步骤...

注:其它文件类型的操作估计也有可能会出现相同的境遇和无奈...

----------

----有过教训,但不曾重视,或不曾记得...所以,还是笔记下来,顺便博客一下...以后方便查询,巩固...

以下是参考代码:

/// <summary>
        /// 此方法加载的图片,由于与文件地址绑定,且作为打开读取状态,所以不能进行再次对文件处理的操作...[会提示正在使用中]
        /// 所以,建议使用 Frm2(pth),通过将其读取到流中,并在读取完成后记得关闭流...就可以再次重复相同或类似的相同文件读取处理操作
        /// </summary>
        /// <param name="pth"></param>
        /// <returns></returns>
        private static Image Frm(string pth)
        {
            Image img = Image.FromFile(pth);
            return img;
        }
        /// <summary>
        /// 建议使用
        /// 测试:正确
        /// 时间:202106172300
        /// </summary>
        /// <param name="pth"></param>
        /// <returns></returns>
        public static Image Frm2(string pth)
        {
            FileStream fs = new FileStream(pth, FileMode.Open);
            return Frm2(fs);
        }
        /// <summary>
        /// 建议使用
        /// 测试:正确
        /// 时间:202106172300
        /// </summary>
        /// <param name="strm"></param>
        /// <returns></returns>
        public static Image Frm2(Stream strm)
        {
            Image img = Image.FromStream(strm);
            strm.Close();
            return img;
        }

暂时只考虑到此种方法...

 

交流 QQ : 2412366909@qq.com

手机号码:177-7499-4428

注:本人使用过程中暂未发现造成存取不正确的问题

 

posted on 2021-06-18 16:26  张光荣的正能量  阅读(105)  评论(0编辑  收藏  举报