asp.net – C#:GDI:使用位图的保存方法过度写入图像

前端之家收集整理的这篇文章主要介绍了asp.net – C#:GDI:使用位图的保存方法过度写入图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ASP.NET C#页面,我正在调整文件夹中的图像.我正在使用GDI来执行此操作.我想调整图像大小并替换旧图像.所以当我尝试使用现有名称保存时,Save方法抛出错误.但是如果我给出一个不同的名称它就会被保存.但是我想为新创建的已调整大小的图像使用相同的文件名,因为我需要用调整大小的新文件覆盖现有文件.任何想法如何继续前进.
我的代码
oldImagePath= oldImagePath.Replace(".jpg","NEW.jpg");

        try
        {
            ImageCodecInfo[] Info = ImageCodecInfo.GetImageEncoders();
            EncoderParameters Params = new EncoderParameters(1);
            Params.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality,100L);
            target.Save(oldImagePath,Info[1],Params);
        }

如果我评论第一行为目标文件创建一个新名称,IT将无法正常工作.其他人会想到它.但我想拥有相同的名称.任何想法? ?提前致谢

解决方法

您需要先删除原始文件.区分是非常重要的 – 当您在.NET中使用图像处理时,您正在使用内存中的对象,其字节通过读取原始图像来填充.您没有使用实际的原始图像.因此,当您去保存这个全新的对象(恰好使用现有图像中的数据),并尝试使用已经在使用的路径时,您将获得异常.

您还需要确保此时原始文件仍未打开;确保丢弃用于填充您正在操作的Image对象的原始文件流.然后删除,然后保存.

猜你在找的asp.Net相关文章