使用powershell将.bmp转换为.png会导致内存泄漏

问题描述 投票:0回答:1

简介

我正在尝试将“.bmp”文件转换为“.png”文件。我之前发现了一段使用 PowerShell 执行此操作的代码。发生的情况是,每转换一个图像,RAM 使用量增加的增量大致等于图像的大小。这会增加我拥有的最大 RAM 并降低我的电脑速度。

问题

我是否需要从 RAM 中释放加载的图像,如果需要,我该怎么做?

powershell image-processing memory
1个回答
3
投票

A

System.Drawing.Bitmap
是一次性的。使用后丢弃。此外,无需多次重新定义函数或重新加载程序集。

[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null

$paths = 'U:', 'F:', 'H:', 'J:', 'K:', 'I:'

foreach ($path in $paths) {
    Get-ChildItem -File "$path\*.bmp" -Recurse | ForEach-Object {
        $bitmap = [System.Drawing.Bitmap]::new($_.FullName)
        $newname = $_.FullName -replace '.bmp$','.png'
        $bitmap.Save($newname, "png")
        $bitmap.Dispose()
    }  
}
© www.soinside.com 2019 - 2024. All rights reserved.