C# pictureBox显示一张图片,我想先释放这个图片以免占用无法修改,(旋转)改完再显示这张图片

效果

在这里插入图片描述

    public static bool RotateFlip(MyDel Log, string fileName)
    {
        try
        {
            string tempPath = Path.GetTempFileName();
            using (Bitmap bmp = new Bitmap(fileName))
            {
                float resolution = 600; //x,y必须为这个数 误差小于+-1
                bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
                bmp.Save(tempPath, System.Drawing.Imaging.ImageFormat.Bmp); //保存
                Log(fileName + "  分辨率" + (int)Math.Round(bmp.VerticalResolution) + "点,(宽" + Math.Round((bmp.Width * 25.4 / resolution)) + ",高" + Math.Round((bmp.Height * 25.4 / resolution)) + ")mm");
            }
            // 将临时文件复制回原始文件路径
            File.Copy(tempPath, fileName, true);
            File.Delete(tempPath);
            
        }
        catch (Exception e) { Log(e.Message); return false; }
        return true;
    }
}
         //pictureBox.Load(templatePathName);//无法释放
         pictureBox.Image = Image.FromFile(templatePathName);//可以释放
         //using (FileStream stream = new FileStream(templatePathName, FileMode.Open, FileAccess.Read))
         //{
         //    pictureBox.Image = Image.FromStream(stream); //可以释放
         //}

如果你发现在 C# 中尝试释放 PictureBox 中的图片时没有成功,可能是因为某些原因导致图片资源没有被正确释放。以下是一些可能的原因和解决方案:

  1. 确保正确的图片路径:首先确认你提供给 PictureBox 的图片路径是正确的。如果路径错误,图片可能无法正确加载和释放。

  2. 使用 Image.FromStream 方法:有时直接从文件加载图片(使用 Image.FromFile)可能会导致文件锁定。你可以尝试先将图片读入一个流中,然后从流中创建图片,这样可以避免直接锁定文件。

    using (FileStream stream = new FileStream("图片路径", FileMode.Open, FileAccess.Read))
    {
        pictureBox1.Image = Image.FromStream(stream);
    }
    

    在这种情况下,不要忘记在修改图片前释放流和图片资源。

  3. 关闭其他占用图片的应用程序:确保没有其他应用程序(如图片查看器或编辑器)正在使用或锁定该图片。

  4. 检查是否有异常:在代码中添加异常处理,以检查是否有任何错误导致图片无法释放。

    try
    {
        if (pictureBox1.Image != null)
        {
            pictureBox1.Image.Dispose();
            pictureBox1.Image = null;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("释放图片时发生错误: " + ex.Message);
    }
    
  5. 使用 Invoke 确保线程安全:如果你的图片释放操作在非UI线程中执行,确保你使用 Invoke 方法来在 UI 线程中执行这些操作。

如果上述方法都无法解决问题,可能需要进一步检查代码中是否有其他地方对图片进行了引用,或者考虑使用不同的方法来加载和处理图片。在某些情况下,重启应用程序或计算机可以解决因资源锁定导致的问题。

在 C# 中,如果你使用 PictureBox 控件来显示图片,并希望在修改图片之前先释放它以避免占用问题,你可以按照以下步骤进行:

  1. 释放当前图片:在修改图片之前,你需要先释放 PictureBox 当前显示的图片。这可以通过将 PictureBox.Image 属性设置为 null 来实现。

  2. 修改图片:在图片被释放之后,你可以对图片文件进行修改,例如重命名、编辑或替换等。

  3. 重新加载图片:修改完成后,你可以再次将修改后的图片加载到 PictureBox 中。

以下是一个示例代码,演示了如何实现这个过程:

// 假设你的PictureBox名为pictureBox1

// 释放pictureBox当前显示的图片
if(pictureBox1.Image != null)
{
    pictureBox1.Image.Dispose();
    pictureBox1.Image = null;
}

// 在这里进行图片的修改操作
// ...

// 重新加载修改后的图片到pictureBox
pictureBox1.Image = Image.FromFile("图片路径");

请注意,当你释放图片资源时,确保图片不再被其他进程或控件使用。此外,在重新加载图片之前完成所有的修改操作,以避免资源占用导致的错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/256284.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server 查询处理过程

查询处理--由 SQL Server 中的关系引擎执行,它获取编写的 T-SQL 语句并将其转换为可以向存储引擎发出请求并检索所需结果的过程。 SQL Server 需要四个步骤来处理查询:分析、代化、优化和执行。 前三个步骤都由关系引擎执行;第三步输出的是…

前端开发新趋势:Web3、区块链和虚拟现实

目录 前言 Web3:下一代互联网 区块链技术 去中心化应用程序(DApps) 区块链:重塑数字世界 数字钱包 NFT(非同质化代币) 虚拟现实:沉浸式体验 WebVR和WebXR 三维图形 新挑战与机会 性…

众和策略:短线交易看什么?短线交易看什么指标?

短线交易看什么? 1、k线 当k线出现黄昏十字星、黑乌鸦、乌云盖顶等卖出形状图时,是一种卖出信号,当k线出现早晨十字星、红三兵、等买入形状图时,是一种买入信号。 2、均线 当均线出现死叉、空头摆放时是一种卖出信号&#xff…

中国邮政旋转图像证码识别方案

最近研究了一下中国邮政旋转验证码的识别,居然正确率高达99%。所以可以说基本上的完美解决了这个问题,可以实现自动化验证。最后也给大家准备了识别代码。 1、下载图片 这里的图片一定要下载足够多,品种足够丰富,数据量越大&…

Kafka 安装与部署

目录 Kafka 下载 (1)将 kafka_2.11-2.4.1.tgz 上传至 /opt/software/ (2)解压安装包至 /opt/module/ [huweihadoop101 ~]$ cd /opt/software/ [huweihadoop101 software]$ tar -zxvf kafka_2.11-2.4.1.tgz -C ../module/&#…

小型洗衣机哪个牌子好十大排名?口碑好的小型洗衣机分享

现在很多小伙伴每天的工作压力已经非常大了,每天下班就希望可以躺平,但我们的贴身衣物还要每天来手动清洗,这对于上班人来说是一件很痛苦的事情,而现在市面上的内衣洗衣机真的给我们提供太多帮助,今天咱们来聊聊内衣洗…

IDEA中自定义注解支持SEL代码提示, 自定义参数, 函数参数, 返回值

背景 首先 IDEA 默认是不支持 SpEL 的代码提示的 根据网上教程, 我们只能使用java-annotations库, 并添加Language("SpEL")注解 但这样仅仅是能够支持SpEL表达式, 并不支持自定义变量, 也不支持提示方法参数和返回值. 尤其是对写框架和第三方库的人来说, 特别不友…

鸿蒙原生应用/元服务开发-Stage模型能力接口(七)

ohos.app.ability.EnvironmentCallback (EnvironmentCallback)一、说明 EnvironmentCallback模块提供应用上下文ApplicationContext对系统环境变化监听回调的能力,包括onConfigurationUpdated方法。本模块首批接口从API version 9 开始支持。后续版本的新增接口&…

Oracle11g登录方法

刚部署完Oracle11g可以使用如下方法登录 方法1 sqlplus sys/oracle as sysdba; 用系统用户登录 create user xy identified by test123; 创建用户 grant connect, resource,dba to xy; 授予权限 之后退出执行sqlplus登录命令 使用创建的用户登录 方法2 sqlplus ---登录…

计算机网络(四)

九、网络安全 (一)什么是网络安全? A、网络安全状况 分布式反射攻击逐渐成为拒绝攻击的重要形式 涉及重要行业和政府部门的高危漏洞事件增多。 基础应用和通用软硬件漏洞风险凸显(“心脏出血”,“破壳”等&#x…

基于springboot+mybatis +mysql+vue人力资源管理系统(含论文)

基于springbootmybatis mysqljsp图书管理系统 一、系统介绍二、功能展示1.系统功能结构图2.登录3.个人信息编辑4.修改密码5.首页图表展示6.菜单分配7.员工请假8考勤数据导入 四、获取源码 一、系统介绍 本系统主要分四个模块,分别是系统管理和权限管理、薪资管理、…

计算机与自动诊疗仓:技术医学的新篇章

计算机与自动诊疗仓:技术医学的新篇章 一、引言 在当今的数字化时代,计算机科学技术与医学的结合已经成为医疗领域创新的重要驱动力。其中,自动诊疗仓的发展更是引领了技术医学的新潮流,为医疗服务带来了革命性的变革。本文将详…

Python爬虫全解析

一.爬虫--requests 1.常见的爬虫 -通用爬虫: 抓取系统重要组成部分。抓取的是一整张页面数据。 -聚焦爬虫: 是建立在通用爬虫的基础之上。抓取的是页面中特定的局部内容。 -增量式爬虫: 检测网站中数据更新的情况。只会抓取网站中最新更新出来的数据。 2.requests模块 re…

《代码随想录》--二叉树(一)

《代码随想录》--二叉树 第一部分 1、二叉树的递归遍历2、二叉树的迭代遍历3、统一风格的迭代遍历代码4、二叉树的层序遍历226.翻转二叉树 1、二叉树的递归遍历 前序遍历 中序遍历 后序遍历 代码 前序遍历 class Solution {public List<Integer> preorderTraversal(T…

HTML5+CSS3小实例:纯CSS实现网站置灰

实例:纯CSS实现网站置灰 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content="…

HTML audio设置.currentTime而实际播放位置不准确

可能是因为 .mp3 文件为 VBR 编码&#xff0c;使用 Au 等工具将文件转为 CBR 编码即可&#xff0c;或其他文件格式。

写开发信的技巧有哪些?做邮件的注意事项?

做外贸写开发信的技巧分析&#xff1f;如何写好外贸开发信邮件&#xff1f; 开发信是一种不可或缺的工具&#xff0c;它用于建立联系、推销产品或服务&#xff0c;以及与潜在客户建立有意义的关系。然而&#xff0c;要写出引人注目且有效果的开发信并不容易。蜂邮将介绍一些开…

idea过往各版本下载

idea过往各版本下载 https://www.jetbrains.com/zh-cn/idea/download/other.html

十问ByteHouse:如何基于ClickHouse玩转向量检索?

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 向量检索被广泛使用于以图搜图、内容推荐以及大模型推理等场景。随着业务升级与 AI 技术的广泛使用&#xff0c;用户期望处理的向量数据规模越来越大&#xff0c;对…

格密码与线性代数

目录 一. 幺模矩阵 二. Gram-Schmidt 正交化 三. 矩阵分解 四. 格基本区 五. 对偶格基 六. 矩阵伪逆 七. 正定矩阵 八. 矩阵转置 九. 奇异值分解&#xff08;SVD分解&#xff09; 格密码中格基是矩阵&#xff0c;格点是向量。本文章梳理一些格密码常用到的一些线性代数…