生·生活

asp.net旅行

 

System.Drawing.Image.FromFile()处理图片,内存不足错误

在批量为图片添加图片水印的时候,出现“内存不足”的错误。水印方法如下(网上找来的):

    /// <summary>
    
/// 为图片添加图片水印
    
/// </summary>
    
/// <param name="originalimage"></param>
    
/// <param name="MarkImg">水印图片绝对路径</param>

    public static void Add_ImgWartMark(string originalimage,string MarkImg) 
    
{
        System.Drawing.Image image 
= System.Drawing.Image.FromFile(originalimage);
        System.Drawing.Image copyImage 
= System.Drawing.Image.FromFile(MarkImg);
        Graphics g 
= Graphics.FromImage(image);
        g.DrawImage(copyImage, 
new Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 00, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
        g.Dispose();

        
string extension = Path.GetExtension(originalimage);
        
string newPath = originalimage.Replace(extension, "_w" + extension);
        image.Save(newPath);
        image.Dispose();
        copyImage.Dispose();
        image 
= null;
        copyImage 
= null;
    }
之前没有判断图片的格式,就直接把图片的地址传了进来,结果一直出现“内存不足”的错误。这是因为在外层遍历文件的时候,没有判断是否是图片就传了进来。
所以在外面判断下图片格式就没什么问题了。
if(Path.GetExtension(file.Name)!=".jpg")
{
  
//调水印方法
}

posted on   厦门刀客  阅读(4937)  评论(1编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)

导航

统计

点击右上角即可分享
微信分享提示