How to Batch Convert Images Using Paint.NET

This article explains how to automate the conversion of multiple image files into different formats using Paint.NET. While Paint.NET lacks a native batch processing feature in its standard user interface, you can achieve fast, automated format conversions by installing community-developed batch plugins or by running lightweight automation scripts that utilize Paint.NET's file-handling assemblies.

Method 1: Using a Batch Processing Plugin

The most straightforward way to convert images in bulk without writing code is by adding a batch conversion plugin to Paint.NET.

  1. Download a Batch Plugin: Acquire a community-tested batch processing plugin compatible with your Paint.NET version, such as the Batch Processor utility from the official Paint.NET forums.
  2. Install the Plugin:
    • Close Paint.NET.
    • Extract the downloaded .dll file.
    • Move the file into your Paint.NET Effects folder (typically located at C:\Program Files\paint.net\Effects or C:\Program Files\Paint.NET\FileTypes, depending on whether the plugin functions as an effect or a file handler).
  3. Run the Conversion:
    • Open Paint.NET.
    • Navigate to the menu where the plugin is registered (usually Effects > Tools or File > Batch Processor).
    • Select your source folder containing the images you want to convert.
    • Choose the target output format (such as PNG, JPEG, BMP, or WebP).
    • Adjust any format-specific parameters, such as compression levels or color depth.
    • Specify the destination directory and click Start or Process to execute the bulk conversion.

Method 2: Scripting with Paint.NET FileTypes via PowerShell

For advanced users requiring custom pipelines, Paint.NET does not offer a direct command-line execution flag, but you can script conversions by loading Paint.NET’s internal file-handling assemblies inside Windows PowerShell.

  1. Locate Paint.NET Assemblies: Identify the installation path containing PaintDotNet.Core.dll, PaintDotNet.Data.dll, and individual format handlers in the FileTypes directory.

  2. Create a PowerShell Automation Script: Use the following script template to load native Paint.NET format handlers (such as converting proprietary .pdn files to standard .png format):

# Set paths
$paintNetPath = "C:\Program Files\paint.net"
$sourceDir = "C:\Images\Input"
$destDir = "C:\Images\Output"

# Load Paint.NET DLLs
Add-Type -Path "$paintNetPath\PaintDotNet.Base.dll"
Add-Type -Path "$paintNetPath\PaintDotNet.Core.dll"
Add-Type -Path "$paintNetPath\PaintDotNet.Data.dll"

# Process all images in directory
Get-ChildItem -Path $sourceDir -Filter *.pdn | ForEach-Object {
    $inputPath = $_.FullName
    $outputPath = Join-Path $destDir ($_.BaseName + ".png")

    # Load image using Paint.NET's Document API
    $stream = [System.IO.File]::OpenRead($inputPath)
    $document = [PaintDotNet.Document]::FromStream($stream)
    $stream.Close()

    # Flatten and save to target format
    $bitmap = $document.Flatten()
    $saveStream = [System.IO.File]::OpenWrite($outputPath)
    $pngFileType = [PaintDotNet.Data.PngFileType]::new()
    $pngFileType.Save($document, $saveStream, [PaintDotNet.ProgressEventHandler]{}, $false)
    
    $saveStream.Close()
    $bitmap.Dispose()
    $document.Dispose()
}
  1. Execute the Script:
    • Open PowerShell as Administrator.
    • Update the directory variables to match your environment.
    • Run the script to process all specified files sequentially without opening the Paint.NET graphical interface.